【问题标题】:How to override default update event in KendoGrid inline edit mode如何在 KendoGrid 内联编辑模式下覆盖默认更新事件
【发布时间】:2014-12-10 10:11:30
【问题描述】:

是否有任何方法可以捕获在内联编辑模式下动态生成的更新事件。我尝试使用编辑和取消命令,它成功了。我经历了这个example,它与取消命令一起工作。任何帮助将不胜感激。

【问题讨论】:

    标签: javascript jquery kendo-ui kendo-grid


    【解决方案1】:

    取决于您想要拦截事件的确切时间。

    我建议您使用save 事件。当您将要保存记录并在退出inline 编辑模式之前触发此事件。

    定义类似于(注意Save 定义在Grid 定义的Events 部分):

    @(Html.Kendo().Grid(Model).DataSource(dataSource => ...)
                              .Columns(columns => ...)
                              .Editable(editing => ...)
                              .Events(events => events.DataBound("onGridDataBound")
                                                      .Save("onGridSave")
                                                      .Edit("onGridEdit")
                                                      .Change("onGridChange")
                              )
                )
    

    以下代码 sn-p 显示了save 事件(使用 JavaScript)

    $(document).ready(function () {
      var crudServiceBaseUrl = "http://demos.telerik.com/kendo-ui/service",
          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: function(options, operation) {
                if (operation !== "read" && options.models) {
                  return {models: kendo.stringify(options.models)};
                }
              }
            },
            batch: true,
            pageSize: 20,
            schema: {
              model: {
                id: "ProductID",
                fields: {
                  ProductID: { editable: false, nullable: true },
                  ProductName: { validation: { required: true } },
                  UnitPrice: { type: "number", validation: { required: true, min: 1} },
                  Discontinued: { type: "boolean" },
                  UnitsInStock: { type: "number", validation: { min: 0, required: true } }
                }
              }
            }
          });
    
      $("#grid").kendoGrid({
        dataSource: dataSource,
        pageable: true,
        height: 550,
        toolbar: ["create"],
        columns: [
          "ProductName",
          { field: "UnitPrice", title: "Unit Price", format: "{0:c}", width: "120px" },
          { field: "UnitsInStock", title:"Units In Stock", width: "120px" },
          { field: "Discontinued", width: "120px" },
          { command: ["edit", "destroy"], title: " ", width: "250px" }],
        editable: "inline",
        save: function(e) {
          alert("Saving");
        }
      });
    });
    <link rel="stylesheet" href="http://cdn.kendostatic.com/2014.3.1119/styles/kendo.common.min.css" />
    <link rel="stylesheet" href="http://cdn.kendostatic.com/2014.3.1119/styles/kendo.default.min.css" />
    <script src="http://cdn.kendostatic.com/2014.3.1119/js/jquery.min.js"></script>
    <script src="http://cdn.kendostatic.com/2014.3.1119/js/kendo.all.min.js"></script>
    
    <div id="grid"></div>

    【讨论】:

    • 谢谢。你的回答让我很开心!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-13
    • 2012-03-20
    • 2012-11-22
    • 2015-03-07
    • 1970-01-01
    • 2014-07-02
    相关资源
    最近更新 更多