有没有一种方法可以在不刷新整个数据源或使用jQuery为每个单元格设置值的情况下刷新单个剑道网格行?
我找到了一种方法来更新网格dataSource并在网格中显示,而无需刷新所有网格。例如,您有一个选定的行,您想更改列“名称”值。
//the grid
var grid = $('#myGrid').data('kendoGrid');
// Access the row that is selected
var row = grid.select();
//gets the dataItem
var dataItem = grid.dataItem(row);
//sets the dataItem
dataItem.name = 'Joe';
//generate a new row html
var rowHtml = grid.rowTemplate(dataItem);
//replace your old row html with the updated one
row.replaceWith(rowHtml);
数据。set
实际上会刷新整个网格,并在某些情况下发送数据绑定
事件。这是非常缓慢和不必要的。它还将折叠任何不理想的展开详图模板。
我建议您使用我编写的这个函数来更新剑道网格中的一行。
// Updates a single row in a kendo grid without firing a databound event.
// This is needed since otherwise the entire grid will be redrawn.
function kendoFastRedrawRow(grid, row) {
var dataItem = grid.dataItem(row);
var rowChildren = $(row).children('td[role="gridcell"]');
for (var i = 0; i < grid.columns.length; i++) {
var column = grid.columns[i];
var template = column.template;
var cell = rowChildren.eq(i);
if (template !== undefined) {
var kendoTemplate = kendo.template(template);
// Render using template
cell.html(kendoTemplate(dataItem));
} else {
var fieldValue = dataItem[column.field];
var format = column.format;
var values = column.values;
if (values !== undefined && values != null) {
// use the text value mappings (for enums)
for (var j = 0; j < values.length; j++) {
var value = values[j];
if (value.value == fieldValue) {
cell.html(value.text);
break;
}
}
} else if (format !== undefined) {
// use the format
cell.html(kendo.format(format, fieldValue));
} else {
// Just dump the plain old value
cell.html(fieldValue);
}
}
}
}
例子:
// Get a reference to the grid
var grid = $("#my_grid").data("kendoGrid");
// Access the row that is selected
var select = grid.select();
// and now the data
var data = grid.dataItem(select);
// Update any values that you want to
data.symbol = newValue;
data.symbol2 = newValue2;
...
// Redraw only the single row in question which needs updating
kendoFastRedrawRow(grid, select);
// Then if you want to call your own databound event to do any funky post processing:
myDataBoundEvent.apply(grid);
如何定义要更新的行?我将假设这是您选择的行,并且正在更新的列的名称是symbol
。
js prettyprint-override">// Get a reference to the grid
var grid = $("#my_grid").data("kendoGrid");
// Access the row that is selected
var select = grid.select();
// and now the data
var data = grid.dataItem(select);
// update the column `symbol` and set its value to `HPQ`
data.set("symbol", "HPQ");
请记住,数据源
的内容是一个可观察的
对象,这意味着您可以使用集
对其进行更新,并且更改应该神奇地反映在网格中
。
如何使用Javascript重新加载或刷新剑道网格? 通常需要在某个时间或用户操作之后重新加载或刷新网格。
我使用Telerik的演示页面上显示的编辑网格。编辑网格后,我希望网格刷新。编辑网格后,网格是否有调用的任何事件? 我试图使用数据绑定事件。在本例中,我读取数据源,但它告诉我刷新网格是一个无限循环。我试图使用saveChanges事件,但它不起作用。
我的项目中有剑道网格 其中一个圆柱,例如Naam圆柱,看起来像这样 它所做的是在弹出窗口中打开一个剑道编辑器,其中包含产品的价值。纳姆 弹出窗口有剑道编辑器、OK和Cancel按钮 这是我的网格图像。带3个点的圆圈是打开剑道编辑器的按钮 这是我的剑道编辑器弹出窗口的图片,文本已经编辑过了 到现在为止,一直都还不错。我在编辑器中获得Naam值。 当我点击OK时,我会打电话给你 它还没有完成; 这就是
我有一个剑道网格和一个按钮栏。单击按钮时,我希望它调用一个javascript函数,并将行的数据作为参数。这是我到目前为止所拥有的
我对某些字段的验证有问题。我只想验证几个字段,其他字段不应该验证。在我的Email字段中,我启动了一个函数来检查格式是否正确,但其他字段只是设置为验证。任何帮助都将不胜感激。 使用此代码,在尝试保存/更新时将验证所有字段。我不想验证分机或电话号码。
我无法编辑剑道网格内联和弹出两者。单击“保存”按钮时,我的操作方法无法获取当前编辑单元格的值。 控制器代码: 在控制器中,我只得到空值。请帮帮我,我想使用剑道mvvm教学。