项目文件读取存储+ dojox网格,数据网格+ 100%宽度和高度

ne5o7dgx  于 2022-12-16  发布在  Dojo
关注(0)|答案(1)|浏览(139)

我想要一个dojox.grid.DataGrid和dojo.data.ItemFileReadStore作为数据存储。我想要它充满整个屏幕。我不想用像素指定尺寸。我看到的所有例子都是用像素指定尺寸或者使用CSV数据存储。我尝试过使用HTML元素和javascript来设置datagrid和存储。
有人这样做过吗?有bug吗?这看起来像是每个人都想要的,但也许因为某些原因不可能。有什么想法吗?谢谢!
编辑以插入程式码:

<div id="gridContainer" style="width: 100%; height: 100%;"></div>

<div id="gridContainer1" style="width: 400px; height: 200px;"></div>

<script type="text/javascript">

    dojo.addOnLoad(function(){
        // our test data store for this example:
        var jsonStore = new dojo.data.ItemFileReadStore({
            url: '/mydata.json'
        });

        var layout = [{
            field: 'id',
            name: 'id',
            width: '20px'
        },
        {
            field: 'name',
            name: 'name',
            width: '50px'
        },
        {
            field: 'owner',
            name: 'owner',
            width: '50px'
        }];

        // create a new grid:
        var grid = new dojox.grid.DataGrid({
            query: {
            rowid: '*'
            },
            store: jsonStore,
            clientSort: true,
            rowSelector: '20px',
            structure: layout
        },
        document.createElement('div'));

        dojo.byId("gridContainer1").appendChild(grid.domNode);

        grid.startup();
    });
</script>

根据我使用的是gridContainer还是gridContainer 1,它分别不显示或显示网格。
怎么回事?

m3eecexj

m3eecexj1#

是的-完全有可能。1)页面布局是布局小部件(ContentPane、StackContainer、BorderContainer、TabContainer...)的责任。网格能够参与布局,但你真的应该把它放在一个专为布局而设计的容器中。
2)程序创建可通过以下方式实现:

var layout = [{
    name: "MyFirstColumnHeader",
    field: 'someColumnNameInMyData',
    width: "180px;"
  },
  {
    name: "MySecondColumnHeader",
    field: 'someOtherColumnName',
    width: "180px;"
  }
];

var emptyData = {
  identifier: 'uniqueIdOfEachItem',
  label: 'displayName',
  items: []
};
var store = new dojo.data.ItemFileWriteStore({
  data: emptyData
});
var grid = new dojox.grid.DataGrid({
  id: 'myGrid',
  query: {
    uniqueIdOfEachItem: '*'
  },
  store: store,
  structure: layout
}, gridPlaceholder);
grid.startup();

其中
MyFirstColumnHeader是您希望出现在第一列标题中的文本
someColumnInMyData是要显示的数据中的对象属性或“列
gridPlaceholder是页面上放置网格的div(只需向ContentPane添加一个空div,并将ContentPane的样式设置为width:100%,身高:百分之百
uniqueIdOfEachItem是每个显示项的属性,用于将它们标记为唯一,例如它们的主键或ID属性
这个例子创建了一个读/写存储,并且有一个简单的布局,但是Dojo文档应该能够帮助处理更复杂的例子。

相关问题