0

我有两个标签栏(dojox.mobile.TabBarButton),我在每个标签上放置了自定义小部件。在第二个选项卡上,小部件使用数据网格来显示 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方法。当数据网格放在取消选择的标签栏上时,宽度和高度设置为0。显式调用resize方法没有任何效果。谁能给我一个线索?

4

1 回答 1

0

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

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

于 2012-06-21T14:57:25.150 回答