Dojo数据网格未在取消选择的标签栏上显示

时间:2012-06-21 11:55:35

标签: datagrid dojo tabbar

我有两个tabbar(dojox.mobile.TabBarButton),我在每个标签上放置自定义小部件。在第二个选项卡上,窗口小部件使用datagrid显示JSON数据。这是我遇到问题的地方。正确加载了数据网格的数据,并且也形成了DOM节点,但未显示数据网格本身。然而,当我把它放在第一个标签上时,它会很奇怪。这是我的JS代码。

var gridDataUrl = "gridData.json";
var params = {
    url: gridDataUrl,
    handleAs: "json"
};

var resultGridNode = this.resultGridNode;

dojo.xhrGet(params).then(function(response){
    var gridData = response;
    var data = {
        label: gridData.identifier,
        identifier: gridData.identifier,
        items: gridData.items
    };

    var store = new dojo.data.ItemFileReadStore({
        data: data
    });

    var dg = new dojox.grid.DataGrid({
        id: "grid",
        store: store,
        structure: gridData.structure
    }, resultGridNode);

    dg.resize();
    dg.startup();
});

自定义模板:

<div data-dojo-type="dijit.layout.BorderContainer" style="width: 100%; height: 100%">
    <div data-dojo-attach-point="resultGridNode" style="height: 600px; width: 400px">
    </div>
</div>

我附加我的小部件的父模板:

<div id="tabView1" data-dojo-type="dojox.mobile.View" data-dojo-props="selected: true" style="height: 100%;">
    <h1 data-dojo-type="dojox.mobile.Heading">Result</h1>
    <div data-dojo-type="dojox.mobile.RoundRect" style="height: 100%" class="mblRoundRect">
        <div data-dojo-attach-point="resultgrid"></div>
    </div>
</div>

调试后,我发现问题可能是视图中的resize方法。当datagrid放在取消选择的tabbar上时,width和height设置为0.显式调用resize方法没有任何效果。谁能给我一个线索?

1 个答案:

答案 0 :(得分:0)

什么是标签栏,dijit.layout.TabContainer

为什么网格位于dijit.layout.BorderContainer?除非所有父dom节点的高度均为100%,否则使用高度为100%的BorderContainer将不起作用。我会删除它,看看它是否有效。