我实施了dgrid。它非常整洁。但是,当我单击行标题进行排序时,除了一行之外的所有行都会消失。我疯了,试图找出原因......
让我们开始吧。
DGrid,它是一个基于dojo的数据网格,请参阅http://dojofoundation.org/packages/dgrid/
当使用Javascript和HTML并连接到Observable MemStore时,网格会填充,有几行非常愉快地显示数据。列是可排序的,即您可以单击行/列标题。但是 - 这就是问题 - 当点击这些行/列标题对行进行排序时,除了一行之外的所有行都会消失。
使用内存(dojo / store / Memory),dGrids数据存储工作正常 - 即行成功排序。但是,当使用Observable(dojo / store / Observable)作为数据存储时,sort会导致行崩溃。请参阅以下示例。
使用内存排序很好:
function populateGrid(Memory, message) {
var featureOne = {
"id": message[0].attributes["id"],
"Col2": message[0].attributes["Col2"],
"Col3": message[0].attributes["Col3"]
}
var featureTwo = {
"id": message[1].attributes["id"],
"Col2": message[1].attributes["Col2"],
"Col3": message[1].attributes["Col3"]
}
var data = [feature1, feature2];
var memStore = new Memory({ data: data });
window.queryRecordsGrid.set("store", memStore);
}
使用Observable时出错:
var memStore;
function populateGrid(Memory, message) {
var feature = {
"id": message[0].attributes["id"],
"Col2": message[0].attributes["Col2"],
"Col3": message[0].attributes["Col3"]
}
var data = [feature];
if (!window.memStore) {
window.memStore = new Observable(new Memory({ data: data }));
window.grid.set("store", window.memStore);
} else {
window.grid.store.notify(feature, feature.id);
}
}
答案 0 :(得分:0)
这可能是您的问题,也可能不是,但目前您商店中的商品没有唯一标识符 - 或者如果它们存在,则商店无法正确接收这些商品。 dojo/store/Memory
默认假设每个商店商品都有唯一的id
。如果您有另一个提供唯一标识符的字段,则可以通过设置Memory
使idProperty
知道这一点,例如:
new Observable(new Memory({ idProperty: "Col1", data: data }));
当您致电feature.id
时,您似乎也假设notify
存在,但就我从您的代码中所知,它不存在。