DevExtreme setCellValue не работает должным образом - PullRequest
0 голосов
/ 10 апреля 2019

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

Проблема, с которой я сталкиваюсь, заключается в том, чтобы мой выбранный столбец обновил свое значение на основе выбранного значения в раскрывающихся меню.

Это то, что я имею до сих пор:

function cboApprovedSelectAll_Changed(data) {
    // get datagrid
    var grid = $("#grid-container").dxDataGrid("instance");

// get selected box value
var selectedValue = data.value;

if (selectedValue == null)
    return;

if (confirm('Do you want to set ALL approval status to ' + (selectedValue == "Approved" ? "Approved" : "Declined") + "?")) {
    var indicies = grid.getSelectedRowKeys();

    //this.grid.cellValue(19079, "ApprovalStatus", "rawr");

    for (var counter = 0; counter < indicies.length; counter++) {
        console.log(indicies[counter]); // returns a value
        console.log(selectedValue);     // returns the correctly selected value

        // set selected rows cell value to that of the drop down 
        grid.cellValue(indicies[counter], "ApprovalStatus", selectedValue);
    }
}
grid.saveEditData();

}

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

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

Uncaught TypeError: Cannot read property 'cellValue' of undefined

Что мне нужно изменить, чтобы моя ячейка данных корректно обновляла свое значение?

И моя таблица данных с колонкой ниже:

@(Html.DevExtreme().DataGrid()
        .ID("grid-container")
                .DataSource(ds => ds
                .WebApi()
                .Controller("sample")
                .UpdateAction("update")
                .LoadAction("load")
                .Key("Id")

                ) // end of datasource
                .Columns(columns =>
                {
                    columns.Add().DataField("ApprovalStatus").AllowEditing(false);
                })
                .Paging(paging => paging.PageSize(10))
                .Pager(pager =>
                {
                    pager.ShowPageSizeSelector(true);
                    pager.AllowedPageSizes(new List<int> { 5, 10, 20 });
                    pager.ShowInfo(true);
                })
                .FilterRow(f => f.Visible(true))
                .HeaderFilter(f => f.Visible(true))
                .GroupPanel(p => p.Visible(true))
                .ShowBorders(true)
                .ShowRowLines(true)
                .ColumnAutoWidth(true)
                .SearchPanel(sp => sp.Visible(true))
                .Selection(s => s.Mode(SelectionMode.Multiple))


) @*end of data grid*@
...