DropDownBox 中的 Devextreme DataGrid

问题描述

我正在使用 DevExtreme .net 控件 DropdownBox显示 DataGrid,但是我无法在 Post 方法的控制器中获取选定的值,我该如何读取选定的值? 我的剃须刀:

        .Form(f => f.Items(items =>
    {
        items.AddGroup()
            .ColCount(2)
            .ColSpan(2)
            .Items(groupItems =>
            {
                groupItems.AddSimpleFor(m => m.IdEmployee).Isrequired(false)
                .HelpText("Enter le nom de l'employé")
                    .Editor(e => e.DropDownBox()
                        .ValueExpr("Id")
                        .displayExpr("Nom")
                            .DataSource(d => d.Mvc()
                            .Controller("RhListeDesEmployes")
                            .LoadAction("Get")
                            .LoadMode(DataSourceLoadMode.Raw)
                            .Key("Id")
                        )
                        .Visible(true)
                        .Placeholder("Selectionner un employé...")
                        .ShowClearButton(true)
                        .OnValueChanged("gridBoxIdEmployee_valueChanged")
                        .ContentTemplate(new TemplateName("EmbeddedDataGridMultipleIdEmployee"))
                    );
                groupItems.AddSimpleFor(m => m.TypeContrat);
                groupItems.AddSimpleFor(m => m.Periode);
                groupItems.AddSimpleFor(m => m.UniteRecrutement);
                groupItems.AddSimpleFor(m => m.DateAmbouche);
            });
    }));
@using (Html.DevExtreme().NamedTemplate("EmbeddedDataGridMultipleIdEmployee"))
{
    @(Html.DevExtreme().DataGrid()
        .ID("embedded-datagridMultipleIdEmployee")
        .DataSource(new JS(@"component.getDataSource()"))
        .Columns(columns => {
            columns.Add().datafield("Nom");
            columns.Add().datafield("Prenom");
            columns.Add().datafield("Departement");
        })
        .HoverStateEnabled(true)
        .Paging(p => p.PageSize(10))
        .FilterRow(f => f.Visible(true))
        .Scrolling(s => s.Mode(GridScrollingMode.Infinite))
        .Height(345)
        .Selection(s => s.Mode(SelectionMode.Single))
        .SelectedRowKeys(new JS(@"[component.option(""value"")]"))
        .OnSelectionChanged(@<text>
            function(selectedItems) {
                var keys = selectedItems.selectedRowKeys;
                component.option("value",keys);
            }
        </text>)
    )
}
function gridBoxIdEmployee_valueChanged(e) {
    var $dataGrid = $("#embedded-datagridMultipleIdEmployee");
    if ($dataGrid.length) {
        var dataGrid = $dataGrid.dxDataGrid("instance");
        dataGrid.selectRows(e.value,false);
    }
}

问题是当我在控制器中调用 Post 时,IdEmployee 没有添加到值中,如下所示:

enter image description here

即使更改的值已在“_$submitElement”下更新:

enter image description here

解决方法

解决方案是每个单元格都有其单元格编辑模板,您可以在其中设置自定义模板并在控制器中获取其值。