在Kendo Grid中有一个外键列,我从ViewData
检索选择列表。网格的编辑模式为InLine
。
当我想添加新记录时,会选择第一个项目。如果我没有更改它并且不选择任何其他内容,则列的值将在服务器端null
。
如何为此列指定默认值?请注意,ID
是用户生成的,我无法猜出第一个项目的ID。
这是网格:
@(Html.Kendo().Grid<InvtMat>()
.Name("BOM")
.Columns(columns =>
{
columns.ForeignKey(x => x.CGoodCode, (IEnumerable)ViewData["Goods"], "Id", "Text");
// removed for brevity
columns.Command(command => { command.Edit(); command.Destroy(); });
})
.ToolBar(toolbar =>
{
toolbar.Create();
})
.Editable(edit => edit.Mode(GridEditMode.InLine))
.DataSource(ds =>
ds.Ajax()
.Model(model =>
{
model.Id(x => x.CGoodCode);
model.Id(x => x.CGoodCode1);
})
)
)
答案 0 :(得分:1)
您可以在DataSource.Model
部分内设置Grid模型的默认值。
以下是一个例子:
.DataSource(ds =>
ds.Ajax()
.Model(model =>
{
model.Id(x => x.CGoodCode);
model.Field(x => x.CGoodCode).DefaultValue(0);
})
)
因为你不知道你必须在那里写什么默认值,所以你应该在定义Grid之前先找到它。我想你的控制器里有这样的东西:
var goods = // get goods from DB.
var goodsDV= goods.First().Id;
ViewData["Goods"] = goods;
ViewData["GoodsDefaultValue"] = goodsDV;
或者您也可以在剃须刀视图中执行此操作
@{
var firstGood = ((IEnumerable<Good>)ViewData["Goods"]).First();
ViewData["GoodsDefaultValue"] = firstGood.Id;
}
然后像这样使用它
model.Field(x => x.CGoodCode).DefaultValue(ViewData["GoodsDefaultValue"]);
好吧?!