在Kendo Grid的编辑器模板中,我想在触发某些事件时保存更改。我想保持窗口打开,以便用户可以继续更新其他字段。我通过编辑器模板中的以下代码保存更改:
function innerGridEditEvent(e) {
var model = e.model;
if (!model.isNew)
return;
var Id = parseInt($("#Id").val(), 10);
if (!Id) {
var masterGrid = $("#masterGrid").data('kendoGrid');
masterGrid.saveChanges();
}
}
我在主网格的SaveChanges
事件中使用此函数保持弹出窗口打开。
function masterSaveChanges(e) {
var grid = e.sender;
grid.bind("dataBinding", function (e) {
e.preventDefault();
})
}
它工作正常,但我需要新创建的Id
。换句话说,我想要一个更新的模型。
如果重要或您想建议任何变通方法,在编辑器模板中,我有另一个网格,并且我想设置该网格的read
和create
数据。< / p>
@(Html.Kendo().Grid< >()
.Name("InnerGrid")
.Columns(columns =>
{
....
})
.ToolBar(toolbar =>
{
toolbar.Create();
})
.DataSource(ds => ds
.Ajax()
....
.Read(r => r.Action(" ", " ").Data("getId"))
.Create(c => c.Action(" ", " ").Data("getId"))
)
.Events(e => e.Edit("innerGridEditEvent"))
)
我将所需的ID保留为隐藏字段,getId
事件将其返回。
function getHeadId(e) {
var id = $("#Id").val();
return { Id: id };
}
....
@Html.HiddenFor(x => x.Id)
答案 0 :(得分:0)
好的,我通过使用全局变量并在dataBinding
上设置其值来解决这个问题。所以主网格的SaveChanges
处理程序是:
function masterGridSaveChanges(e) {
var grid = e.sender;
grid.bind("dataBinding", function (e) {
e.preventDefault();
setId(e.items[0].LiIdH);
})
}
插入的项目始终是items
中的第一项,至少我希望如此!他们say也必须e.index
,但我的undefined
始终是var
。
在这种情况下,我在编辑器模板中创建了一个setter而不是全局function setHeadId(value) {
$("#Id").val(value);
}
。
#include <iostream>
using namespace std;
int functionToBeReturned() {
cout << "hello!" << endl;
}
int (*returnFunction())() {
// Observe how the parentheses around returnFunction distinguish a function
// returning a function pointer from a normal function.
return functionToBeReturned;
}
int main() {
int (*function)();
function = returnFunction();
function();
}
应用程序的其余部分保持不变。