DataGrid Dojo无法在Widget中工作

时间:2015-02-23 15:57:59

标签: dojo widget dojox.grid.datagrid

我在dojo上有一个小部件,但它不显示数据网格。如果我在小部件外面做示例。我看到firebug的代码,你不能错,但是,我可以看到div检查,里面什么都没有。 Builder运行,但不在div中加载网格。

Widget.js

define([ "dojo/_base/declare",
"dojo/text!./FormularioQCI.html",
"icm/base/_BaseWidget",
"dojo/store/JsonRest",
"dojo/store/Memory",
"dojo/store/Cache",
"dojox/grid/DataGrid",
"dojo/data/ObjectStore"
],

function(declare, template, _BaseWidget, JsonRest, Memory, Cache, DataGrid, ObjectStore){
return declare("icm.custom.pgwidget.formularioQCI.FormularioQCIWidget", [_BaseWidget], {
templateString: template,
widgetsInTemplate: true,

constructor: function(){
    alert("X");
    myStore = dojo.store.Cache(dojo.store.JsonRest({target:"rest/formularioQCI/get"}), dojo.store.Memory());
    grid = new dojox.grid.DataGrid({
        store: dataStore = dojo.data.ObjectStore({objectStore: myStore}),
        structure: [
            {name:"State Name", field:"name", width: "200px"},
            {name:"Abbreviation", field:"abbreviation", width: "200px", editable: true}
        ]
    }, "target-node-id"); // make sure you have a target HTML element with this id
    grid.startup();
    alert("Y");
    dojo.query("#save").onclick(function(){
        alert("X");
        dataStore.save();
    });
    var id = 0;
    dojo.query("#add").onclick(function(){
        dataStore.newItem({
            name: "col2-" + id,
            abbreviation: "col3-" + id
        });
        id++;
    });
},

/**
 * @private destroys this widget
 */
destroy: function() {
    //Do any custom clean up here
    this.inherited(arguments);
}
});});

Widget.html

<div style="width: 100%; height: 100%;">
   <div id="target-node-id">
   </div>
   <button id="save">Save
   </button>
   <button id="add">Add Linha
   </button>
</div>

1 个答案:

答案 0 :(得分:0)

你需要在postCreate函数中编写代码。

最简单的方法是用 postCreate 替换构造函数关键字。 原因是在postCreate函数调用之前“target-node-id”将不可用。

postCreate: function(){
   this.inherited(arguments);
   // Rest of your code here.
   alert("X");
   ...

}