Javascript 如何在排序时同步Kendo UI网格数据源?

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) {

好的,我们有一些使用剑道UI网格的遗留代码

在对网格进行排序之后,我们需要能够读取对应于每一行的数据源项,方法是迭代jqueryselected'tr'列表,然后根据行本身的索引选择数据源项

问题在于网格排序时数据源不排序,因此您不能简单地获取每行的索引并查找相应的数据源项,如下所示

    $('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, '.', ','));
            }
        );

这些都是不需要的。您只需要使用数据源的()方法。

您的方法很好,但是如果您看看我对这个问题的回答,您会发现它是更好、更具体系结构的解决方案。