njr101..
18
关键部分是使用数据视图作为数据源初始化网格,连接事件,以便网格响应数据视图中的更改,最后将数据提供给数据视图.它应该看起来像这样:
dataView = new Slick.Data.DataView();
grid = new Slick.Grid("#myGrid", dataView, columns, options);
// wire up model events to drive the grid
dataView.onRowCountChanged.subscribe(function (e, args) {
grid.updateRowCount();
grid.render();
});
dataView.onRowsChanged.subscribe(function (e, args) {
grid.invalidateRows(args.rows);
grid.render();
});
// When user clicks button, fetch data via Ajax, and bind it to the dataview.
$('#mybutton').click(function() {
$.getJSON(my_url, function(data) {
dataView.beginUpdate();
dataView.setItems(data);
dataView.endUpdate();
});
});
请注意,您不需要每次都创建新网格,只需将数据绑定到数据视图即可.
如果要实现排序,还需要告诉dataview在网格收到排序事件时进行排序:
grid.onSort.subscribe(function (e, args) {
sortcol = args.sortCol.field; // Maybe args.sortcol.field ???
dataView.sort(comparer, args.sortAsc);
});
function comparer(a, b) {
var x = a[sortcol], y = b[sortcol];
return (x == y ? 0 : (x > y ? 1 : -1));
}
(这个基本排序取自SlickGrid示例,但您可能希望实现本地生成的东西;例如,不使用全局变量)