Kendo ui 如何修改剑道网格';s在发布到服务器之前编辑的值
我有剑道网格,可以进行InCell编辑。网格也配置为凝乳操作。 因此,每当网格行中发生更改时。用户必须单击Kendo ui 如何修改剑道网格';s在发布到服务器之前编辑的值,kendo-ui,kendo-grid,kendo-asp.net-mvc,telerik-mvc,kendo-datasource,Kendo Ui,Kendo Grid,Kendo Asp.net Mvc,Telerik Mvc,Kendo Datasource,我有剑道网格,可以进行InCell编辑。网格也配置为凝乳操作。 因此,每当网格行中发生更改时。用户必须单击SaveChanges命令按钮来保存更改。网格将向服务器发布行模型的集合 @(Html.Kendo().Grid<mymodel>() .Name("mygrid") .Columns(columns => {
SaveChanges
命令按钮来保存更改。网格将向服务器发布行模型的集合
@(Html.Kendo().Grid<mymodel>()
.Name("mygrid")
.Columns(columns =>
{
//columns here
columns.Command(command => command.Destroy()).Width(100);
})
.ToolBar(toolbar =>
{
toolbar.Create();
toolbar.Save();
})
.Editable(editable => editable.Mode(GridEditMode.InCell))
.Pageable()
.Navigatable()
.Sortable()
.Scrollable()
.Filterable()
.AutoBind(true)
.DataSource(dataSource => dataSource
.Ajax()
.Batch(true)
.PageSize(20)
.ServerOperation(false)
.Model(model =>
{
model.Id("Id");
var f = model.Field("Id", typeof(int));
f.Editable(false);
})
.Model(model =>
{
model.Id("Id");
var f = model.Field("Id", typeof(int));
f.Editable(false);
})
.Create("Create", "Test")
.Read("Get", "Test")
.Update("Update", "Test")
.Destroy("Delete", "Test")
))
如何更新即将发布到服务器的模型?SaveChanges事件是否是处理此场景的正确事件?我不熟悉kendo for asp.net,因此无法给出确切答案,但通常您可以在发送前拦截、添加或修改
parameterMap
中的数据,例如:
dataSource = new kendo.data.DataSource({
transport: {
read: {
url: crudServiceBaseUrl + "/Products",
dataType: "jsonp"
},
update: {
url: crudServiceBaseUrl + "/Products/Update",
dataType: "jsonp"
},
destroy: {
url: crudServiceBaseUrl + "/Products/Destroy",
dataType: "jsonp"
},
create: {
url: crudServiceBaseUrl + "/Products/Create",
dataType: "jsonp"
},
parameterMap(data, type) {
switch (type) {
case 'read':
let request = {};
request.page = data.page - 1;
request.page_size = data.pageSize;
request.sort = data.sort;
request.filter = data.filter;
return JSON.stringify(request);
case 'destroy':
return kendo.stringify(data.models);
case 'update':
console.log("Data that that will be sent for updating: ", data.models);
return kendo.stringify(data.models);
default:
break;
}
}
},
batch: true,
pageSize: 20,
schema: {
model: {
id: "ProductID",
fields: {
}
}
}
});
您可以查看这个官方示例,我只更改了更新时发送的第一个对象的ProductName
:
我希望你能从中挽救一些东西,德国劳埃德船级社 保存更改事件就是您想要的事件。由于您使用的是mvc,您还可以通过执行
.Events(e=>e.SaveChanges“onGridSave”)
来设置网格其余部分的事件。然后onGridSave成为您定义的javascript函数
.Events()与.Pageable()或.Navigatable()处于同一级别
然后在javascript函数中,您可以执行如下操作:
function onGridSave(e){
e.sender.dataSource._data[0].PropertyName = "new value/data manipulation"
}
PropertyName是要修改的模型属性。_数据[0]引用数据源中的第一个元素。您可能需要迭代或调整索引以到达要修改的行
已修改的行的.u数据[0].dirty属性将设置为true。只有dirty设置为true的元素才会传递给控制器 SaveChanges事件是处理此场景的正确事件吗?可能是,但如何在发送之前修改模型?如果事件参数上有
model
对象,请尝试更改它。
function onGridSave(e){
e.sender.dataSource._data[0].PropertyName = "new value/data manipulation"
}