我有一个Kendo网格设置如下:
@(Html.Kendo().Grid<ParticipatingDentalEE>()
.Name("DentalEE")
.Columns(columns =>
{
columns.Bound(p => p.State).Title("State").Width(150).EditorTemplateName("State");
columns.Bound(p => p.Count).Title("Count").Width(150);
columns.Command(c => { c.Edit(); c.Destroy(); });
})
.DataSource(dataSource => dataSource
.Ajax()
.Model(m => {
m.Id(p => p.State);
m.Field(p => p.State).Editable(true);
m.Field(p => p.Count).Editable(true).DefaultValue("");
})
.Create(update => update.Action("EditingInline_Create", "Dental"))
.Read(read => read.Action("EditingInline_Read", "Dental"))
.Update(update => update.Action("EditingInline_Update", "Dental"))
.Destroy(update => update.Action("EditingInline_Destroy", "Dental"))
)
//.Scrollable()
//.Sortable()
.Editable(e => e.Mode(GridEditMode.InLine))
)
“州”列包含一个下拉模板,如下所示:
@(Html.Kendo().DropDownList()
.Name("States") // Name of the widget should be the same as the name of the property
.DataValueField("CODE") // The value of the dropdown is taken from the EmployeeID property
.DataTextField("NAME") // The text of the items is taken from the EmployeeName property
.BindTo((System.Collections.IEnumerable)ViewData["States"]) // A list of all employees which is populated in the controller
)
当我编辑或创建项目时,我的下拉列表会正确显示,但是当我保存项目时,下拉值不会保留在网格中。为了做到这一点,我还需要设置其他东西吗?
答案 0 :(得分:4)
.Name("States") // Name of the widget should be the same as the name of the property
也就是说,它必须与列的名称匹配,列名称为“State”而不是“States”。
答案 1 :(得分:3)
显然这是一个旧线程,但修复方法是使用DropDownListFor方法(而不是DropDownList)而不是指定名称。我怀疑Kendo做了一些内部名称匹配,以将编辑后的值应用回模型。
@model int // ...or whatever type works for your model
@(Html.Kendo().DropDownListFor(i => i)
.DataValueField("CODE")
.DataTextField("NAME")
.BindTo((System.Collections.IEnumerable)ViewData["States"]))
答案 2 :(得分:0)
我不确定这是否能解决您的问题,但在我在模型中设置UIHint
装饰器和之前,我的网格的编辑器模板无法正常工作视图中的EditorTemplateName
。
E.g。
public class ParticipatingDentalEE {
...
[UIHint("State")] // this should be the name of your EditorTemplate
public State State { get; set; }
}
我推测在{view'模式下UIHint
用于网格,而在'edit'模式下使用EditorTemplateName
,并且两者都需要将两者链接在一起。