Kendo UI向网格添加新行会添加具有空值的额外行

时间:2019-02-22 22:41:03

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

我一直在试图找出正在发生的事情,但是还没有。

请查看下面的代码。这是一个不一致的行为,所以我很难抓住触发它的原因。该网格位于弹出窗口中,当我刷新页面并尝试使用它时,我注意到它在第一次尝试时可以正常工作。然后,我保存/取消弹出窗口,并继续重复执行,在某些时候失败,并开始累积空行。

我尝试使用来检查网格的值

  

$('#gridFldListItems')。data(“ kendoGrid”)。dataSource.data()

它显示没有数据,但是只要单击“添加新记录”,它就会显示2。

它不一定会在第二次尝试时失败,但是它永远不会在第一次尝试时失败。我怀疑每次打开弹出窗口时,它不一定都是空的(经过前几次尝试),并且它携带了先前尝试的一些数据。我可能是错的。

当我单击“添加新记录”时,它将添加具有空值的行,并为我提供了在第二行中输入的选项。

enter image description here

我也输入项目名称并单击更新时,它不会触发“创建”事件,如下所示: enter image description here

这时网格破裂了。这是网格的代码

var grid = $("#gridFldListItems").kendoGrid({
                editable: {
                    "confirmation": "Are you sure you want to delete this item?",
                    "mode": "inline",
                    "createAt": "bottom"
                },

                selectable: true,
                autoBind: false,
                toolbar: ["create" ],
                columns: [
                    { field: 'Item' },
                    {
                        command: ['edit', 'destroy',
                            { iconClass: "k-icon k-i-arrow-up", click: $.proxy(this, 'selectedFieldDef_onClkMoveUp'), name: 'Up' },
                            { iconClass: "k-icon k-i-arrow-down", click: $.proxy(this, 'selectedFieldDef_onClkMoveDown'), name: 'Down' }], title: ' '
                    }
                ],
                dataSource: this.selectedFieldDef_dsItems,

            }).data("kendoGrid");


selectedFieldDef_dsItems: new kendo.data.DataSource({
            transport: {
                read: function (e) {

                    var field = editViewModel.get("selectedFieldDef");

                    var mapItems = $.map(field.Items, function (item, idx) {
                        return {
                            Item: item
                        };

                    });


                    //on success
                    e.success(mapItems);
                },
                create: function (e) {
                    // on success
                    e.success(e.data);
                },
                update: function (e) {
                    // on success
                    e.success();
                },
                destroy: function (e) {
                    var vm = editViewModel;
                    // locate item in original datasource and remove it
                    var field = vm.get("selectedFieldDef");

                    if (field.DefaultValue && !vm.selectedFieldDef_dsItemsFindItem(vm.selectedFieldDef_dsItems.data(), field.DefaultValue)) {
                        field.DefaultValue = null;
                        vm.set("selectedFieldDef", field);

                        $("#inpFldRegex").kendoDropDownList().data("kendoDropDownList").trigger("change");
                    }

                    // on success
                    e.success();
                }
            },
            error: function (e) {
                alert("Status: " + e.status + "; Error message: " + e.errorThrown);
            },
            schema: {
                model: {
                    id: "Item",
                    fields: {
                        Item: { editable: true, nullable: true }
                    }
                }
            }
        })

任何帮助将不胜感激。

更新: 刷新页面时效果很好

0 个答案:

没有答案