Я использую 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*@