问题描述
我正在使用 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 没有添加到值中,如下所示:
解决方法
解决方案是每个单元格都有其单元格编辑模板,您可以在其中设置自定义模板并在控制器中获取其值。