Невозможно получить значения строк из сетки кэндо, если они не находятся в режиме редактирования

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

Классы insert/edit/delete находятся в codebehind в C#

Это код js для выполнения удаления:

            var selectedRow;
            // deletes the selected row
            function doDelete() {
                var grid = $('#Grid').data('tGrid');
                if (selectedRow) {
                    grid.deleteRow($(selectedRow));
                }
                return false;
            }

И это код для выполнения редактирования:

            function beginInsert() {
                var grid = $('#Grid').data('tGrid');

                // enter insert mode
                grid.addRow();

                // update the selected row
                selectedRow = $('#Grid .t-grid-new-row');

                // show the 'Insert' and 'Cancel' buttons and hide the 'Delete', 'Create' and 'Edit' buttons
                toggleInsertButtons(true);
                return false;
            }
            function endInsert() {
                var grid = $('#Grid').data('tGrid');
                // perform the insertion - call the _Insert action method
                grid.insertRow($(selectedRow));
                // hide the 'Insert' and 'Cancel' buttons and show the 'Delete', 'Create' and 'Edit' buttons
                toggleInsertButtons(false);
                return false;
            }

1 ответ

  1. Чтобы удалить строку, вам нужно сказать виджету сетки, какую строку он должен удалить, верно? В коде используется selectedRowпеременная, которая заполняется в событии (вероятно) edit. Поэтому удалять можно только при редактировании.

    Чтобы удалить выбранную строку в любое время, просто используйте selectи removeRowвместе:

    function doDelete() {
        var grid = $('#Grid').data('kendoGrid');
        grid.deleteRow(grid.select());
    }
    

    Демонстрация

    Теперь, если вы хотите удалить строку, которая не выбрана, вы должны каким-то образом выбрать ее и перейти к removeRowметоду:

    function doDelete() {
        var grid = $('#Grid').data('kendoGrid');
        var row = $(grid.tbody).find("tr:first"); // Selects grid's first row
    
        grid.removeRow(row);
    }
    

    Демонстрация