DevExtreme setCellValue无法按预期工作

时间:2019-04-10 15:24:21

标签: javascript devexpress devextreme

我正在为我的项目使用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

为了使我的datagrid单元正确更新其值,我需要更改什么?

还有我的datagrid和下面的列:

@(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*@

0 个答案:

没有答案