Пользовательский интерфейс Kendo, добавляющий новую строку в сетку, добавляет дополнительную строку с нулевым значением - PullRequest
0 голосов
/ 23 февраля 2019

Я пытался выяснить, что происходит, но пока не сделал.

Пожалуйста, посмотрите код ниже. Это непоследовательное поведение, поэтому мне трудно поймать, что его вызывает.Эта сетка находится во всплывающем окне, я заметил, когда я обновляю страницу и пробую ее, она отлично работает с первой попытки.Затем я сохраняю / отменяю всплывающее окно и продолжаю повторять, что в какой-то момент происходит сбой и начинается накопление пустых строк.

Я попытался проверить значение сетки, используя

$ ('# gridFldListItems') .data ("kendoGrid"). dataSource.data ()

Показывает, что данных нет, но как только нажимает "Добавить новую запись", отображается 2.

Это не обязательно терпит неудачу со второй попытки, но это никогда не терпит неудачу при первой попытке.Я подозреваю, что каждый раз, когда я открываю всплывающее окно, оно не обязательно пустое (после нескольких первых попыток) и содержит некоторые данные из предыдущих попыток.Я могу ошибаться.

Когда я нажимаю добавить новую запись, она добавляет строку с нулевым значением и дает мне возможность ввода во второй строке.

enter image description here

I также Когда я помещаю имя элемента и нажимаю кнопку обновить, он не вызывает событие «создать» и выглядит так: 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 }
                    }
                }
            }
        })

Любая помощь будет принята с благодарностью.

ОБНОВЛЕНИЕ: Работает нормально, когда я обновляю страницу

...