Jquery 是否可以打开网格页面并显示json
我们希望在请求页面时将数千条记录加载到客户端,并显示前25条记录。然后,用户应该能够逐页浏览记录,或按列访问列表,或按不同列中的数据进行筛选。我们选择一次性将数据加载到客户端,因为我们希望在页面请求中有更大的负载,并且在之后查看或编辑数据时有更快的性能。我看不到在SlickGrid站点上进行分页的任何示例。SlickGrid是否加入了分页功能,或者它是如此轻量级,以至于我不得不自己实现它?是否有人有任何链接或例子分享,这将给我一个开端Jquery 是否可以打开网格页面并显示json,jquery,slickgrid,Jquery,Slickgrid,我们希望在请求页面时将数千条记录加载到客户端,并显示前25条记录。然后,用户应该能够逐页浏览记录,或按列访问列表,或按不同列中的数据进行筛选。我们选择一次性将数据加载到客户端,因为我们希望在页面请求中有更大的负载,并且在之后查看或编辑数据时有更快的性能。我看不到在SlickGrid站点上进行分页的任何示例。SlickGrid是否加入了分页功能,或者它是如此轻量级,以至于我不得不自己实现它?是否有人有任何链接或例子分享,这将给我一个开端 我们将使用的数据将是json数据。我已经用slickgrid
我们将使用的数据将是json数据。我已经用slickgrid编写了大约一周的代码,发现我必须自己编写排序和筛选代码。通过查看源代码,我没有看到任何指示内置分页的内容。您将花费大量时间为其编写代码,但这似乎是值得的 我使用ajax/json加载了30000行数据,它在不到1秒的时间内加载和排序。我不知道这是否有帮助,但这是我调用的加载网格的方法。它在客户端上排序,在服务器上筛选:
$.getJSON(baseUrl + '/_GetNewHires?filter=' + filter, function (data) {
grid = new Slick.Grid($("#NewHiresGrid"), data, columns, options);
grid.onSort = function (sortCol, sortAsc) {
sortdir = sortAsc ? 1 : -1;
sortcol = sortCol.field;
if (sortAsc == true)
data.sort(compare);
else
data.reverse(compare);
grid.render();
};
});
调用sort方法时,将重新排列绑定到网格(数据)的数组,然后使用.render()方法重新加载网格。为了进行分页,您必须有一个包含所有数据的数组和一个显示数据的数组
他确实有一个分页的例子,但作为javascript的业余爱好者,我很难理解。这也让我困惑了一段时间,直到我得到了下面的代码:
grid = new Slick.Grid("#myGrid", data, columns, options);
grid.onSort.subscribe(function(e,args) {
sortcol = args.sortCol;
sortAsc = args.sortAsc;
alert("Sort On " + sortcol.field);
if (sortAsc == true) {
data.sort(function (a, b) {
var nameA = a[sortcol.field].toLowerCase(), nameB = b[sortcol.field].toLowerCase()
if (nameA < nameB) //sort string ascending
return -1
if (nameA > nameB)
return 1
return 0 //default return value (no sorting)
});
} else {
data.reverse(function (a, b) {
var nameA = a[sortcol.field].toLowerCase(), nameB = b[sortcol.field].toLowerCase()
if (nameA < nameB) //sort string ascending
return -1
if (nameA > nameB)
return 1
return 0 //default return value (no sorting)
});
}
grid.invalidateAllRows();
grid.render();
});
grid=new Slick.grid(“myGrid”,数据、列、选项);
grid.onSort.subscribe(函数(e,args){
sortcol=args.sortcol;
sortAsc=args.sortAsc;
警报(“分拣开启”+分拣控制字段);
if(sortAsc==true){
数据排序(函数(a,b){
变量nameA=a[sortcol.field].toLowerCase(),nameB=b[sortcol.field].toLowerCase()
if(nameA名称B)
返回1
返回0//默认返回值(无排序)
});
}否则{
数据反转(功能a、b){
变量nameA=a[sortcol.field].toLowerCase(),nameB=b[sortcol.field].toLowerCase()
if(nameA名称B)
返回1
返回0//默认返回值(无排序)
});
}
grid.invalidateAllRows();
grid.render();
});
SlickGrid/slick.dataview.js中提供分页支持
dataView = new Slick.Data.DataView();
grid = new Slick.Grid("#myGrid", dataView, columns, options);
dataView.setPagingOptions({
pageSize: 25,
});
var pager = new Slick.Controls.Pager(dataView, grid, $("#myPager"));
您还需要在页面上的某个位置进行渲染
<div id="myPager"></div>
在上述设置中,分拣机
var sortcol = "title";
var sortdir = 1;
var percentCompleteThreshold = 0;
var searchString = "";
this.grid.onSort = function(sortCol, sortAsc) {
sortdir = sortAsc ? 1 : -1;
sortcol = sortCol.field;
this.dataView.sort(sortCol.sorter);
this.grid.render();
}.bind( this );
function comparer(a,b) {
var x = a[sortcol], y = b[sortcol];
return sortdir * (x == y ? 0 : (x > y ? 1 : -1));
}
// Define some sorting functions
function NumericSorter(a, b) {
return sortdir * (a[sortcol]-b[sortcol]);
}
我已经编写了一个寻呼机插件,SlickGrid增强寻呼机,它使SlickGrid分页使用更加容易。它完全支持json。请在github上查看此内容。谢谢。我开始研究jqGrid,它似乎更合适。这是一个遗憾,因为我真的很喜欢slickGrid的外观,它看起来很强大!您可以添加一些文本来解释您的代码段吗?:)
var sortcol = "title";
var sortdir = 1;
var percentCompleteThreshold = 0;
var searchString = "";
this.grid.onSort = function(sortCol, sortAsc) {
sortdir = sortAsc ? 1 : -1;
sortcol = sortCol.field;
this.dataView.sort(sortCol.sorter);
this.grid.render();
}.bind( this );
function comparer(a,b) {
var x = a[sortcol], y = b[sortcol];
return sortdir * (x == y ? 0 : (x > y ? 1 : -1));
}
// Define some sorting functions
function NumericSorter(a, b) {
return sortdir * (a[sortcol]-b[sortcol]);
}