显示SlickGrid但未在网格中填充数据

时间:2014-08-12 13:47:22

标签: json slickgrid

显示SlickGrid但未在网格中填充数据。直接ajax调用很好,但dataview的问题请任何人帮助我

  var jqxhr = $.getJSON('http://localhost:50305/Service1.svc/json/Projects', function (data) {
                          for (var i = 0; i < data.length; i++) {
                                      slickdata[i] = {
                                          ProjectID: data[i].ProjectID,
                                          ProjectTypeID: data[i].ProjectTypeID,
                                          ProjectName: data[i].ProjectName,
                                      };
                                  }
                                  console.log("slickdata is" + slickdata);
                              dataView.onRowCountChanged.subscribe(function (e, args) {
                                      grid.updateRowCount();
                                      grid.render();
                                  });

                                  dataView.onRowsChanged.subscribe(function (e, args) {
                                      grid.invalidateRows(dataView.rows);
                                     grid.render();
                                  });

                                  dataView.beginUpdate();
                                  dataView.setItems(slickdata, "ProjectID");
                                  dataView.endUpdate();

                          dataView = new Slick.Data.DataView({ inlineFilters: true });
                        grid = new Slick.Grid("#teamGrid", dataView, columns, options);

2 个答案:

答案 0 :(得分:0)

一旦定义了网格,你需要做

grid.init();

以及

alert(data);

是警报正确的json对象。将数据发送到控制台,你可以看到那里的json对象

答案 1 :(得分:0)

如果您想使用评论中提到的Dataview。您需要几行代码,还需要将data添加到dataview对象。请参阅以下内容:

// create DataView & Grid object
var dataView = new Slick.Data.DataView();
var grid = new Slick.Grid("#myGrid", dataView, columns, options);

// then bind data to the DataView object
dataView.beginUpdate();
dataView.setItems(data);
dataView.endUpdate();

您可以在此处查看更完整的DataView示例:Example4-model


修改
您的问题似乎没有在您的数据中包含唯一的id属性,但SlickGrid特别需要它,如果您没有id,则会在控制台中抛出错误。我通常更喜欢在服务器端修复此问题(PHP或您使用的任何语言)。您还可以通过javascript添加id属性:

for (var i = 0; i < data.length; i++) {
  data.id = data[i].ProjectID; // clone your ProjectID into a new 'id' property
}

// then bind data to the DataView object
dataView.beginUpdate();
dataView.setItems(data);
dataView.endUpdate();