Есть ли способ сохранить помеченные для удаления строки в Kendo.Grid видимыми при нажатии кнопки «ДОБАВИТЬ НОВУЮ ЗАПИСЬ»? - PullRequest
0 голосов
/ 01 июля 2019

Я работаю на Kendo.Grid, где я делаю CRUD на данных. Сценарий по умолчанию для пакетных операций Kendo.Grid's - удаление строк на стороне клиента и их запоминание. Затем при добавлении новых строк или обновлении любых строк пакет отправляется на сервер.

Тем не менее, в такой ситуации пользователь может удалять строки из сетки, но когда приходит точка к SAVE CHANGES, удаленные строки больше не отображаются.

Итак, я пытаюсь вместо того, чтобы удалять строки из сетки на стороне клиента, я просто отмечаю их для удаления, меняя строку css на прозрачную:

  .disabledGridRow {
    opacity: 0.5;
    pointer-events: none;
}

У меня есть пользовательский Удалить: columns.Command(c => c.Custom("Delete").Click("DeleteRecord"));

и затем при удалении я вызываю следующие функции:

function DeleteRecord(e) {

    e.preventDefault(e);
    var grid = $("#TicketReportPropertyGrid").getKendoGrid();
    var row = $(e.target).closest("tr");
    var dataItem = grid.dataItem(row);
    dataItem.deleted = true;
    row.addClass('disabledGridRow');
}

Отмечает строку для удаления.

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

Что я хочу сделать, это сохранить эти строки отмеченными при нажатии ADD NEW RECORD.

Итак, я думал о какой-то логике в событии Grid Edit, которое запускается каждый раз, когда данные редактируются или добавляются в сетку:

function onEdit(e) {
    var rowsCount = 0;
    var ids = [];
    if (e.model.isNew()) {
        rowsCount = e.sender.dataSource.data().length;
        if (rowsCount > 0) {
            for (var i = 0; i < rowsCount; i++) {
                if (e.sender.dataSource.data()[i].deleted) {
                    ids.push(e.sender.dataSource.data()[i]);
                }
            }
        }
        console.log(ids);
        ShowTotal(e, 'new');
        e.model.set("TicketID", $('#TicketID').attr('text'));
    }
    else {
        ShowTotal(e, 'edit');
    }
}

То, что я хочу сделать, - это получить все строки, помеченные для удаления, и сохранить их css в соответствии с тем, что я установил для них, когда они были отмечены. В этом случае идентификаторы array сохранят все строки, помеченные для удаления.

Как установить здесь css, чтобы пометить строки как удаленные?

...