Jquery 执行“后无法移动行”;OrderBy";剑道格网

Jquery 执行“后无法移动行”;OrderBy";剑道格网,jquery,asp.net-mvc,kendo-ui,kendo-grid,Jquery,Asp.net Mvc,Kendo Ui,Kendo Grid,我创建了一个小脚本,可以在剑道网格的第一个位置删除和插入行。然而,每次我按任何列排序时,那个特定的脚本都不再工作,并且在那个之后我不能移动任何行。我尝试再次读取数据源,也尝试刷新网格,但没有发生任何事情 这是我的脚本函数(b.t.w.在orderby列之前工作得很好): 正如我所说,我尝试再次读取数据源并刷新网格,正如您在我的注释代码中所看到的那样。当我这样做时,行项目会反弹回其原始位置,可能是因为再次读取数据源。如何在网格上的orderby操作之后移动行项目 我还创建了一个小游乐场来尝试与我类

我创建了一个小脚本,可以在剑道网格的第一个位置删除和插入行。然而,每次我按任何列排序时,那个特定的脚本都不再工作,并且在那个之后我不能移动任何行。我尝试再次读取数据源,也尝试刷新网格,但没有发生任何事情

这是我的脚本函数(b.t.w.在orderby列之前工作得很好):

正如我所说,我尝试再次读取数据源并刷新网格,正如您在我的注释代码中所看到的那样。当我这样做时,行项目会反弹回其原始位置,可能是因为再次读取数据源。如何在网格上的orderby操作之后移动行项目

我还创建了一个小游乐场来尝试与我类似的代码:


试试看,按第一列排序,然后看我不能再移动任何记录。

当你进行排序时,在执行
删除
插入
之后,排序仍然适用,所以移动
并不是不起作用,问题是你仍然在排序,然后似乎不起作用

:我在数据中添加了一个
order
列,我有两个元素具有相同的
order
。如果您按顺序排序,
“baz”
元素现在是第二个元素,但如果您单击
移动
按钮,它将转到第一个位置,因为它可能是第一个元素,但仍然可以排序

dataSource: [
    { order: 1, foo: "foo" },
    { order: 2, foo: "bar" },
    { order: 1, foo: "baz" }
],
:在本例中,您有相同的
订单
列,但这次
元素的
订单
值不是最小值。在这里,如果您按
顺序
排序,然后单击移动,您将看到
“baz”
移动到具有相同
顺序
值的第一个元素

dataSource: [
    { order: 1, foo: "foo" },
    { order: 2, foo: "bar" },
    { order: 2, foo: "baz" }
],
:但如果要将其移动到第一个位置,则需要通过调用
grid.dataSource.sort({})来删除顺序
之前删除
插入

function move(col) {
    var item = "baz";
    var grid = $("#grid").data("kendoGrid"); 

    var data = grid.dataSource.data();
    var dataItem = $.grep(data, function (d) {
            if (d.foo == item) {
            console.log(col);
            grid.dataSource.sort({});
            grid.dataSource.remove(d);
            grid.dataSource.insert(0, d);
            //grid.dataSource.read();
            return d;
            }
            return false;
            });
    //grid.refresh();
}

谢谢你的回答@OneBai,这就成功了。实际上,我按照您的建议清除了排序,但我必须说,为列表创建订单值是非常聪明的。Thanx再次说:)
function move(col) {
    var item = "baz";
    var grid = $("#grid").data("kendoGrid"); 

    var data = grid.dataSource.data();
    var dataItem = $.grep(data, function (d) {
            if (d.foo == item) {
            console.log(col);
            grid.dataSource.sort({});
            grid.dataSource.remove(d);
            grid.dataSource.insert(0, d);
            //grid.dataSource.read();
            return d;
            }
            return false;
            });
    //grid.refresh();
}