【问题标题】:Kendo grid row duplicating on insert剑道网格行在插入时重复
【发布时间】:2019-03-16 20:49:58
【问题描述】:

我有一个包含数据行的 Kendo 网格,如果连续添加两个新行,则添加到网格中的第一行将在 SQL db 表中插入一条重复记录。我看到other posts 的建议是在创建事件上使用“完成”事件:

transport: {
        read: UrlBase + "getAll",
        create: {
            url: UrlBase + "create",
            dataType: "jsonp",
            complete: function (e) {
                $("#grid").data("kendoGrid").dataSource.read();
            }
        },

问题是,在我的代码中,我使用模型绑定将数据发送到服务器端,并且还需要维护网格结构:

<div class="k-pane">
        @{
            Html.Kendo().Grid(Model)
            .Name("exampleGrid")
            .Columns(columns =>
            {
                columns.Select().Width(60);
                columns.Bound(c => c.exampleUniqueID).Hidden(true);
                columns.Bound(c => c.example1ID).Hidden(true);
                columns.Bound(c => c.example2ID).Hidden(true);
                columns.Bound(c => c.example1CD).EditorTemplateName("exampleDropDown").Width(300);
                columns.Bound(c => c.EffectiveDate).Format("{0:MM/dd/yyyy}").EditorTemplateName("EffectiveDatePicker");
                columns.Bound(c => c.EndDate).Format("{0:MM/dd/yyyy}").EditorTemplateName("EndDatePicker");
                columns.Bound(c => c.SortOrder);
                columns.Bound(c => c.AddedBy);
                columns.Bound(c => c.AddedOn);
                columns.Bound(c => c.UpdatedBy);
                columns.Bound(c => c.UpdatedOn);

            })

            .ToolBar(toolbar =>
            {
                toolbar.Create().Text("Add");
                toolbar.Save().SaveText("Save");

            })
            .Editable(editable => editable.Mode(GridEditMode.InCell).DisplayDeleteConfirmation(false))
            .Scrollable()
            .Sortable()
            .Events(e => e.SaveChanges("exampleGrid_onSaveChanges"))
            .DataSource(datasource => datasource
                           .Ajax()
                           .Model(model =>
                               {
                                   model.Id(d => d.exampleUniqueID);
                                   model.Field(f => f.AddedBy).Editable(false);
                                   model.Field(f => f.AddedOn).Editable(false);
                                   model.Field(f => f.UpdatedBy).Editable(false);
                                   model.Field(f => f.UpdatedOn).Editable(false);
                               }
                            )
                           .ServerOperation(false)
                           .Read(read => read.Action("ControllerAction", "ControllerName"))
                           .Create(create => create.Action("ControllerAction_Create", "ControllerName").Data("exampleGrid_onAdditionalData"))
                           .Update(update => update.Action("ControllerAction_Create", "ControllerName"))
                           .Destroy(delete => delete.Action("ControllerAction_Delete", "ControllerName"))
                           .Events(e => e.Error("exampleGridDS_onError"))
                        )
            .Render();

        }
    </div>

由于网格在事件方法调用(用于读取、更新、创建等)中使用了箭头语法,并且由于在数据源的 JSON 格式定义中使用了“完成”事件,如何将“完成”事件在上面的网格中使用?如果不能,如何防止重复插入到sql表中?

【问题讨论】:

    标签: javascript c# html asp.net-mvc kendo-ui


    【解决方案1】:

    对数据源使用 requestEnd 事件。它会在传输方法之后调用。

    .Events(events => events.RequestEnd("add_a_javascript_method"))

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多