Dojox Datagrid包含数据,但显示为空

时间:2010-02-26 15:24:42

标签: datagrid dialog dojo

我真的很感激任何帮助。我正在以编程方式创建这个Dojox Datagrid并提供JSON数据。截至目前,我正在JavaScript中创建这些数据。请参考以下代码示例。

var upgradeStageStructure =[{
    cells:[
      {
        field: "stage",
        name: "Stage",
        width: "50%",
        styles: 'text-align: left;'
      },
      {
        field:"status",
        name: "Status",
        width: "50%",
        styles: 'text-align: left;'
      }
    ]
    }];

    var upgradeStageData =
      [
        {id:1, stage: "Preparation", status: "Complete"},
        {id:2, stage: "Formatting", status: "Complete"},
        {id:3, stage: "OS Installation", status: "Complete"},
        {id:4, stage: "OS Post-Installation", status: "In Progress"},
        {id:5, stage: "Application Installation", status: "Not Started"},
        {id:6, stage: "Application Post-Installation", status: "Not Started"}
      ];
    var stagestore = new dojo.data.ItemFileReadStore({data:{identifier:"id", items: upgradeStageData}});
var upgradeStatusGrid = new dojox.grid.DataGrid({
        autoHeight: true,
        style: "width:400px;padding:0em;margin:0em;",
        store: stagestore,
        clientSort: false,
        rowSelector: '20px',
        structure: upgradeStageStructure,
        columnReordering: false,
        selectable: false,
        singleClickEdit: false,
        selectionMode: 'none',
        loadingMessage: 'Loading Upgrade Stages',
        noDataMessage:'There is no data',
        errorMessage: 'Failed to load Upgrade Status'
    });

    dojo.byId('progressIndicator').innerHTML='';
    dojo.byId('progressIndicator').appendChild(upgradeStatusGrid.domNode);
    upgradeStatusGrid.startup();

问题是我在显示时没有看到网格内的任何内容(没有标题,没有数据)。但我确信网格中的数据确实存在并且网格已正确初始化,因为我调用了alert (grid.domNode.innerHTML);。生成的HTML会显示一个包含标题行和上述数据的表。

This link包含一张图片,说明了我在显示页面时看到的内容。 (因为我的帐户是新的,所以无法发布图片)

正如您可能已经注意到的,我创建的6个数据有6行,但网格很乱。如果您认为自己知道可能出现什么问题,请提供帮助。

提前致谢, VIV

2 个答案:

答案 0 :(得分:1)

要做的第一件事是使用像Firebug http://getfirebug.com/这样的东西来检查DOM,看看你的数据网格是否被插入到DOM中(但是不可见)。寻找“dojoxGrid”类的东西如果你看到了,你看到任何与之相关的样式吗?如果你的高度设置为0,或者它被设置为隐藏,或者......

当我没有将我的网格高度设置为修复px数时,我遇到了你正在描述的问题。所以,一旦我的网格看起来如下所示,一切运作良好:

(In my HTML Markup:)
<div id="kgbHolder"></div>

(In my JavaScript:)
var kgbStore = new dojox.data.QueryReadStore({ url: "kgbService.php?kgbID=" + id });
var kgbGrid = new dojox.grid.DataGrid({
            store: kgbStore,
            noDataMessage: 'No kreits associated with selected query.',
            selectionMode: 'single',
            height: "400px",
            clientSort: true,
            structure: kgbGridLayout
        });
var kgbHolder = dojo.byId('kgbHolder'); 
kgbHolder.appendChild(kgbGrid.domNode);
kgbGrid.startup();
dijit.byId('kgbDialog').show();

注意:我在使用样式键设置高度(使用宽度)时遇到问题。只需要高度:“someNumpx”。

答案 1 :(得分:0)

我终于解决了这个问题!在我的HTML文件中,我有以下标记:

<center>
 <div id="gridArea">
   <div dojoType="dojox.data.DataGrid" dojoAttachPoint="myGrid"></div>
 </div> 
</center>

问题在于<center>标记。删除它会导致网格正确显示数据。这很奇怪,如果有人可以推断出为什么会这样,我会很感激。