下面我贴了一个函数,根据函数调用showsames('a')显示datagrid中的数据。 DataGrid不会刷新不同的字符,如showsames('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"); }); */ }); }); }
谢谢, 拉加
答案 0 :(得分:0)
你不应该像发布它一样刷新网格!
首先,您需要在启动时初始化网格。所以网格显示了一些数据。 每次都不要创建网格!!!! 在您的功能必须使用它的方法与网格通信之后!
我经常使用此批量刷新网格:
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
}
它也可能适用于您的代码,但您可能需要进行一些调整。