grid.startup()不适用于Dojo数据网格中的不同数据
下面我粘贴了一个函数,根据函数调用shownames('a')在datagrid中显示数据。 DataGrid不会刷新像shownames('b')等等不同的字符。 或者,如何在不完全破坏网格的情况下更改数据网格中的数据?
function shownames(chr) {
require([
"dojox/grid/EnhancedGrid",
"dojo/store/Memory",
"dojo/data/ObjectStore",
"dojo/_base/xhr",
"dojo/domReady!"
], function(DataGrid, Memory, ObjectStore, xhr){
var grid, dataStore;
xhr.get({
url: "http://localhost/xampp/namedb.php?name_idx="+chr,
handleAs: "json"
}).then(function(data){
dataStore = new ObjectStore({ objectStore:new Memory({ data: data.items }) });
if(dijit.byId("namegrid")) {
grid.destroy();
} else {
grid = new dojox.grid.EnhancedGrid({
id: "namegrid",
store: dataStore,
query: { name_id: "*" },
queryOptions: {},
structure: [
{ name: "Name", field: "name", width: "25%" },
{ name: "Actual Meaning", field: "meaning", width: "50%" },
{ name: "name_id", field : "name_id", hidden: true }
]
}, "alphanames");
grid.startup();
}
/*
dojo.connect(grid, "onRowClick", grid, function(evt){
var idx = evt.rowIndex,
item = this.getItem(idx);
// get the ID attr of the selected row
var value = this.store.getValue(item, "country_name");
});
*/
});
});
}
谢谢,拉贾
你不应该按照你发布的方式刷新网格!
首先,您需要在启动时初始化网格。 所以网格显示了一些数据。 不要每次都创建一个网格! 之后,你的功能必须通过使用它的方法与网格进行通信!
我经常使用这个批量来刷新网格:
var grid= // CREATE GRID IN HERE
function yourFunction(id) {
var prepareQuery={};
prepareQuery["name_id"]=id; // Create a query based on id
grid._pending_requests={}; // Stop everything thats loading
grid._setQuery(prepareQuery); // Pass query to the grid
grid._refresh(true); // Refresh grid
}
它也可能与你的代码一起工作,但你可能需要做一些改动。
链接地址: http://www.djcxy.com/p/60457.html上一篇: grid.startup() not working for different data in the Dojo data grid
