在不关闭弹出窗口的情况下保存Kendo Grid中的更改,但更新模型

时间:2015-07-12 07:38:37

标签: kendo-ui kendo-grid kendo-asp.net-mvc

在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。换句话说,我想要一个更新的模型。

如果重要或您想建议任何变通方法,在编辑器模板中,我有另一个网格,并且我想设置该网格的readcreate数据。< / 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)

1 个答案:

答案 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();
}

应用程序的其余部分保持不变。