排序时,dgrid行会消失

时间:2014-04-22 04:27:44

标签: dojo dgrid

我实施了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);

              }
                  }

1 个答案:

答案 0 :(得分:0)

这可能是您的问题,也可能不是,但目前您商店中的商品没有唯一标识符 - 或者如果它们存在,则商店无法正确接收这些商品。 dojo/store/Memory默认假设每个商店商品都有唯一的id。如果您有另一个提供唯一标识符的字段,则可以通过设置Memory使idProperty知道这一点,例如:

new Observable(new Memory({ idProperty: "Col1", data: data }));

当您致电feature.id时,您似乎也假设notify存在,但就我从您的代码中所知,它不存在。