Javascript 如何在排序时同步Kendo UI网格数据源?
好的,我们有一些使用剑道UI网格的遗留代码 在对网格进行排序之后,我们需要能够读取对应于每一行的数据源项,方法是迭代jqueryselected'tr'列表,然后根据行本身的索引选择数据源项 问题在于网格排序时数据源不排序,因此您不能简单地获取每行的索引并查找相应的数据源项,如下所示Javascript 如何在排序时同步Kendo UI网格数据源?,javascript,jquery,sorting,kendo-grid,Javascript,Jquery,Sorting,Kendo Grid,好的,我们有一些使用剑道UI网格的遗留代码 在对网格进行排序之后,我们需要能够读取对应于每一行的数据源项,方法是迭代jqueryselected'tr'列表,然后根据行本身的索引选择数据源项 问题在于网格排序时数据源不排序,因此您不能简单地获取每行的索引并查找相应的数据源项,如下所示 $('td:nth-child(' + colIndex + ')', $('tbody', grid.element).eq(0)).each( function (iIndex) {
$('td:nth-child(' + colIndex + ')', $('tbody', grid.element).eq(0)).each(
function (iIndex) {
var td = $(this);
var tr = td.parent();
var data = grid.dataSource.data()[iIndex];
if (data.Status.toLowerCase() !== 'c') {
totalBalanceDue = (totalBalanceDue - data.Payment) > 0 ? (totalBalanceDue - data.Payment) : 0;
};
td.html('$' + totalBalanceDue.formatMoney(2, '.', ','));
}
);
看来我得自己回答这个问题了 通过浏览文档和网络,我发现我处理这个问题的方式并不一定准确。我可以使用行的data-uid属性,通过使用DataSource.getByUid()函数,从DataSource.data()数组中获取相应的数据项,而不是尝试对数组进行排序以匹配gridview的行 这正是我所需要的
$('td:nth-child(' + colIndex + ')', $('tbody', grid.element).eq(0)).each(
function (iIndex) {
var td = $(this);
var tr = td.parent();
//gets the corresponding dataitem for the selected row.
var data = grid.dataSource.getByUid(tr.data("uid"));
if (data.Status.toLowerCase() !== 'c') {
totalBalanceDue = (totalBalanceDue - data.Payment) > 0 ? (totalBalanceDue - data.Payment) : 0;
};
td.html('$' + totalBalanceDue.formatMoney(2, '.', ','));
}
);
这些都是不需要的。您只需要使用数据源的()方法。您的方法很好,但是如果您看看我对这个问题的回答,您会发现它是更好、更具体系结构的解决方案。