2012-06-21 70 views
0

我有兩個tabbar(dojox.mobile.TabBarButton),我在每個選項卡上放置了自定義小部件。在第二個選項卡上,小部件使用數據網格顯示JSON數據。這是我遇到問題的地方。 datagrid的數據正在正確加載並且DOM節點也已形成,但datagrid本身未顯示。然而,當我把它放在第一個標籤上時,它的確很有用。這是我的JS代碼。Dojo datagrid在取消選中的標籤欄上不顯示

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> 

調試後,我發現這個問題可能是由大小調整方法視圖。將數據網格放在取消選定的選項卡欄上時,寬度和高度將設置爲0.顯式調用resize方法不會有任何效果。任何人都可以給我一個線索嗎?

回答

0

什麼是tabbar,dijit.layout.TabContainer

爲什麼網格在dijit.layout.BorderContainer?使用高度爲100%的BorderContainer將不起作用,除非所有父級DOM節點的高度均爲100%。我會刪除它,看看它是否有效。

+0

對不起,我錯過了一個細節。我編輯了我的帖子。 Tabbar是dojox.mobile.TabBarButton。我必須在我的自定義模板中使用dijit.layout.BorderContainer,否則數據網格將不會被顯示。可能與我使用的公司框架有關。 – springrolls