Javascript 剑道UI网格更新功能不会启动

Javascript 剑道UI网格更新功能不会启动,javascript,jquery,kendo-ui,kendo-grid,Javascript,Jquery,Kendo Ui,Kendo Grid,这是我的剑道UI网格。读起来不错,但问题是当我更改网格单元格内联时,它不会触发datasource.transport.update调用。为什么不呢 我已经确定我指定了一个id列,并且传输CRUD函数都是相同的类型(这里是函数,不是URL),但是我也尝试让它与URL一起工作。只有transport.read会开火 当我检查控制台日志时,没有给出任何错误 所以我想在线编辑它。单击网格上的一个单元格,并在您离开该单元格的焦点时更改该值,我希望dataSource.transport.update()

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

我已经确定我指定了一个id列,并且传输CRUD函数都是相同的类型(这里是函数,不是URL),但是我也尝试让它与URL一起工作。只有transport.read会开火

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


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

编辑:

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

如果有人想出了一种不需要自己调用更新函数的方法,那么我洗耳恭听。

尝试改变

    $('#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" }
                }
            }
        }
    });


要编辑内联,只需利用

将命令列更改为:

command: ["edit"]
并将您的
可编辑规范更改为
“内联”

我已编辑了您的解决方案:

为了完全充实这一点,您必须从命令中提供相关方法的实现,例如更新、创建等。。。您可以在中看到这些示例

如果您想使用自定义编辑器(下拉列表等)进行单元格单击编辑,请参见


还有。

如果使用的是
可编辑:弹出窗口
,请尝试以下操作:

editable: "inline",
命令:[
{名称:“视图”,模板:,文本:,},
{名称:“编辑”,文本:},
{名称:“销毁”,文本:}
],标题:,宽度:“160px”

这里的诀窍是给命令数组中的
文本
键留出空白(

编辑按钮对内联单元格编辑有影响吗?编辑按钮(openEdit)工作正常,但问题是内联编辑无法工作。我马上试试你的解决方案。你能创建JSFIDLE项目吗?你的按钮是自定义按钮,这就是它启动
openEdit
函数的原因。但我尝试将其更改为默认的编辑按钮,就像我的答案一样,但没有任何更改。更新函数没有被激发。很抱歉,我找不到问题所在。我还尝试了错误处理,但也没有触发错误事件。是的,我有一个自定义弹出窗口,在触发openEdit()时打开。但我的实习老板说他也希望能够在线编辑。谢谢你的帮助,我似乎也弄不明白。我想在线编辑它。单击网格上的一个单元格,并在您离开该单元格的焦点时更改该值,我希望dataSource.transport.update()或任何函数运行。我不能让它着火。很抱歉,我把您和命令编辑按钮列混淆了。我应该忽略这一点。我已经为内联编辑解决方案编辑了我的答案,并更新了小提琴。我使用change()事件让它工作,并自己启动了更新函数。如果你能找到一种自动完成的方法,那么我会接受你的回答。我会更新我的问题。尽我所能,你所做的是正确的方法,也是我说你需要。。。“执行命令中的相关方法,如更新、创建等。”啊,太棒了。我误解了,我以为你想让我用命令按钮更新。奇怪的是我花了这么长时间才启动了更新功能。。。在网上搜索了几个小时:p谢谢你的帮助。
{ command: ["edit", "destroy"], title: " ", width: "160px" }
editable: "inline",
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"