kendo UI网格更新功能不会激发

时间:2014-02-13 09:46:20

标签: javascript jquery kendo-ui kendo-grid

    $('#usersGrid').kendoGrid({
        columns: [
            { field: "UserName", title: "Display name", width: "140px" },
            { field: "Unit", title: "Unit", width: "140px" },
            { field: "Email", title: "E-mail", width: "140px" },
            { field: "Indienst", title: "Indienst", width: "140px" },
            { field: "Uitdienst", title: "Uitdienst", width: "140px" },
            { field: "Roles", title: "Roles" },
            { command: { text: "edit", click: openEdit } }
        ],
        editable: {
            update: true,
            create: true
        },
        dataSource: {
            transport: {
                read: function (options) {
                    $.ajax({
                        url: "/Administration/GetUserList",
                        dataType: "json", 
                        data: {
                            indienst: function () {
                                return indienst;
                            }
                        },
                        success: function (data) {
                            $("#usersGrid").data('kendoGrid').dataSource.data(data);
                        }
                    });
                },
                update: function (options) {
                    alert('not firing');
                }
            }
        },
        schema: {
            model: {
                id: "UserId",
                fields: {
                    UserId: { editable: false, type: "int" },
                    UserName: { type: "string" },
                    Unit: { editable: false, type: "string" },
                    Email: { type: "string" },
                    Indienst: { type: "string" },
                    Uitdienst: { type: "string" },
                    Roles: { editable: false, type: "string" }
                }
            }
        }
    });

这是我的剑道UI网格。它的读数很好,但问题是,当我更改网格单元格内联时,它不会触发datasource.transport.update调用。为什么不呢?

我已经确定我指定了一个id列,并且传输CRUD函数都是相同的类型(函数在这里,而不是url),但我也试图让它与url一起使用。只有transport.read会触发......

当我检查控制台日志时,没有给出错误。

所以我想内联编辑它。单击网格上的单元格,并在您离开我希望运行dataSource.transport.update()的单元格的焦点或任何函数时更改该值。

http://jsfiddle.net/8tzgc/135/

修改

在对我发现的有关change()事件的文档进行一些研究之后。通过检查它是什么类型的更改事件,我们可以确定它是否是更新事件并运行我们自己想要的功能。这是我更新的jsfiddle:

http://jsfiddle.net/8tzgc/140/

如果有人想出一种不需要自己调用更新功能的方法,那么我全都听见了。

3 个答案:

答案 0 :(得分:2)

要编辑内联,您可以利用telerik demo site.

中的示例

将命令列更改为:

{ command: ["edit", "destroy"], title: " ", width: "160px" }

并将您的editable规范更改为"inline"

editable: "inline",

我已经用解决方案编辑了你的小提琴:http://jsfiddle.net/8tzgc/136/

为了完全充实这一点,您必须从命令中提供相关方法的实现,例如更新,创建等......您可以在telerik demo.

如果您想使用自定义编辑器(下拉菜单等)进行单元格点击编辑,请执行以下another telerik example.

还有this example of batch editing

答案 1 :(得分:0)

尝试改变

command: { text: "edit", click: openEdit } 

command: ["edit"]

答案 2 :(得分:0)

如果您使用editable:popup,请尝试以下操作:

command: [
   { name: "view", template: "<a class='k-button k-button-icontext selectDiscountPercentage' title='Discount Percentage' ><i class='k-icon k-i-view'></i></a>", text: "", },
   { name: "edit", text: "" }, 
   { name: "destroy", text: " "}
], title: "&nbsp;", width: "160px"

这里的技巧是给命令数组中的" "键提供空格(text