我正在尝试通过 addRow()方法向网格插入一个新行,但我希望在网格上当前选定的行之后或当前选定的行之前添加它?有人可以帮忙吗?目前,我得到的是:
Grid.addRow();
$(" .k-grid-edit-row")。appendTo(" #Grid tbody");
但是这会在表格的底部插入一行。我需要它在特定位置添加行,网格已经有行。
答案 0 :(得分:19)
以下是步骤:
insert
中的DataSource
方法指定要插入的位置。代码:
var grid = $("#grid").data("kendoGrid");
// Get selected item
var sel = grid.select();
// Get the item
var item = grid.dataItem(sel);
// Get the index in the DataSource (not in current page of the grid)
var idx = grid.dataSource.indexOf(item);
// Insert element before
grid.dataSource.insert(idx, { /* Your data */ });
// Insert element after
grid.dataSourcer.insert(idx + 1, { /* Your data */ });
在此处查看此行动:http://jsfiddle.net/OnaBai/8J4kr/
编辑如果在编辑模式下插入要输入该行的行后,您必须记住要插入的页面内的位置,因为editRow
在DOM级别工作:
var grid = $("#grid").data("kendoGrid");
// Get selected item
var sel = grid.select();
// Remember index of selected element at page level
var sel_idx = sel.index();
// Get the item
var item = grid.dataItem(sel);
// Get the index in the DataSource (not in current page of the grid)
var idx = grid.dataSource.indexOf(item);
// Insert element before (use {} if you want an empty record)
grid.dataSource.insert(idx, { LastName: "Smith", FirstName: "John", City: "Baiona" });
// Edit inserted row
grid.editRow($("#grid tr:eq(" + ( sel_idx + 1) + ")"));
以后你应该做
// Insert element before (use {} if you want an empty record)
grid.dataSource.insert(idx + 1, { LastName: "Smith", FirstName: "John", City: "Baiona" });
// Edit inserted row
grid.editRow($("#grid tr:eq(" + ( sel_idx + 2) + ")"));
在此处查看此行动:http://jsfiddle.net/OnaBai/8J4kr/1/
还有一个问题是,您可能需要移动到上一页或下一页,具体取决于您是在页面的第一行之前插入还是在页面的最后一行之后插入(使用page
移动在Grip页面之间)。