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