如何为 Kendo 网格中的外键列设置默认值?
How can I set default value for a foreign key colum in Kendo Grid?
在 Kendo 网格中有一个外键列,我从 ViewData
中检索 select 列表。 Grid的编辑模式是InLine
.
当我想添加一条新记录时,第一项是selected。如果我不更改它并且不 select 任何其他内容,则列的值在服务器端将是 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);
})
)
)
您可以在 DataSource.Model
部分为网格模型设置默认值。
这是一个例子:
.DataSource(ds =>
ds.Ajax()
.Model(model =>
{
model.Id(x => x.CGoodCode);
model.Field(x => x.CGoodCode).DefaultValue(0);
})
)
因为你不知道你必须在那里写什么默认值,所以你应该在定义网格之前先找到它。我想你的控制器里有这样的东西:
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"]);
简单吧?!
在 Kendo 网格中有一个外键列,我从 ViewData
中检索 select 列表。 Grid的编辑模式是InLine
.
当我想添加一条新记录时,第一项是selected。如果我不更改它并且不 select 任何其他内容,则列的值在服务器端将是 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);
})
)
)
您可以在 DataSource.Model
部分为网格模型设置默认值。
这是一个例子:
.DataSource(ds =>
ds.Ajax()
.Model(model =>
{
model.Id(x => x.CGoodCode);
model.Field(x => x.CGoodCode).DefaultValue(0);
})
)
因为你不知道你必须在那里写什么默认值,所以你应该在定义网格之前先找到它。我想你的控制器里有这样的东西:
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"]);
简单吧?!