我正在使用kendo ui网格。因为我已经使用批处理模式来保存值。如果我在一行中更改记录,那么具有相应行的值也将被更改,当我们单击保存时,这两个字段将被保存到数据库中。
例如。我有一个网格:
Integer Value
1 First
2 Second
3 Third
4 Fourth
如果我将1的值更改为4,那么将更改4并且值也会动态更改。我的意思是我想在这里交换1和4。我也可以改变 保留所有字段但最后所有记录必须保存到数据库中。我试过像
此代码将在网格更改功能
中 var grid = $('#grid').data("kendoGrid");
var selectedRow = grid.select();
var selectedRowIndex = selectedRow.index();
console.log(selectedRowIndex);
var firstItem = dataSource.data()[selectedRowIndex];
var datalength = dataSource.data();
for (var i = 0; i < datalength.length; i++)
{
var dataItem = datalength[i].id;
if (dataItem == firstItem.get('id'))
{
var secondItem = dataSource.data()[i];
secondItem.set('id', dataItem);
}
}
然后值正在变化,但值在更改后未传递给控制器。
答案 0 :(得分:8)
如果您想直接使用数据,则需要将更改的记录标记为脏。
dataSource.data()[changedIndex].dirty = true;
dataSource.sync();
答案 1 :(得分:0)
只需设置Kendo网格中的数据值。
$(&#34;#my_grid&#34;)。data(&#34; kendoGrid&#34;)。dataSource.data()[rowindex] .columnName = newValue;
在我的项目中,我在下拉列表更改时使用列名= fclty_cd更改了我的Kendo网格行的值。
我写了这个:
function onChange(e) {
var fromContactNumber = parseFloat($('#fromContactNumber').val());
var toContactNumber = parseFloat($('#toContactNumber').val());
var length = $('#grid table tr[role=row]').length;
var faculty = $('#ddl_Faculty').val();
for (var i = 1; i < length; i++) {
var num = parseFloat($($('#grid table tr[role=row]')[i]).find("td")[4].innerText);
if (num >= fromContactNumber && num <= toContactNumber) {
$("#grid").data("kendoGrid").dataSource.data()[i - 1].fclty_cd = faculty;
$($($('#grid table tr[role=row]')[i]).find("td")[11]).text(faculty);
}
}
}
此行仅更改UI值: $($($(&#39; #grid table tr [role = row]&#39;)[i])。find(&#34; td&#34;)[11])。text(faculty);
此行更改了Kendo数据网格中的值: $(&#34;#my_grid&#34;)。data(&#34; kendoGrid&#34;)。dataSource.data()[rowindex] .columnName = newValue;