如何在 Kendo UI asp net MVC 中为空类型设置默认值
How to set up default value for Null Type in Kendo UI asp net MVC
我使用 Kendo UI ASP NET MVC 网格,我想在模型部分为可空类型(例如字符串)设置默认值,如下所示
@(Html.Kendo().Grid(Model.Comments)
.Name("...")
.DefaultSettings()
.Columns(columns =>
{
columns.Bound(c => c.JobId).Width("12%");
columns.Bound(c => c.ChangeDate).Width("15%");
columns.Bound(c => c.ChangeUserName).Width("12%");
columns.Bound(c => c.ProjectRole).Width("12%");
columns.Bound(c => c.Text).Width("18%");
})
.AddActionsByPermissions(new[]
{
...
})
.Editable(editable => editable.Mode(GridEditMode.InLine))
.Sortable()
.Resizable(resize => resize.Columns(true))
.Selectable()
.Scrollable(src => src.Height("auto"))
.Pageable(p => p.PageSizes(new[] { 10 }).PageSizes(false))
.Events(e =>
{
e.Change("projectCommentsModule.onRowSelect");
e.DataBinding("projectCommentsModule.onGridDataBinding");
})
.DataSource(dataSource => dataSource
.Ajax()
.ServerOperation(false)
.Read("Commentss", "ProjectComments")
.Model(m =>
{
m.Id(d => d.Id);
m.Field(d => d.ChangeDate).Editable(false).DefaultValue(DateTime.Now);
m.Field(d => d.ChangeUserName).DefaultValue(Model.CurrentUserProjectRole).Editable(false);
m.Field(d => d.ProjectRole).Editable(false).DefaultValue(Model.CurrentUserName);
m.Field(d => d.ProjectNumber).Editable(false).DefaultValue(Model.ProjectNumber);
m.Field(d => d.JobId).DefaultValue(0);
})
.Sort(s => s.Add(c => c.ChangeDate).Descending())
.Create(create => create.Action("AddComment", "ProjectComments"))
.Update(create => create.Action("UpdateComment", "ProjectComments"))
)
)
但是对于可空类型它没有设置,所以当我保存记录时,我得到了服务器空值但是需要得到例如"SomeName",我该如何解决它?
现在,我认为这是 Kendo UI 中的一个错误。截至 2019 年 7 月,我在 Telerik 的博客 post 上发现了这个:
I am afraid that with our last official release we introduced a regression bug that affects applying default values with some fields (in this case string type of fields).
他们将此作为变通解决方案提供,我认为您可以在此处使用它。添加类型为 BeforeEdit
的事件,如下所示:
.Events(e=>e.BeforeEdit("onBeforeEdit"))
<script>
function onBeforeEdit(e) {
if(e.model.isNew()){
e.model.YourField = "SomeName";
}
}
</script>
然后您显然会根据需要更改字段名称和值。
我使用 Kendo UI ASP NET MVC 网格,我想在模型部分为可空类型(例如字符串)设置默认值,如下所示
@(Html.Kendo().Grid(Model.Comments)
.Name("...")
.DefaultSettings()
.Columns(columns =>
{
columns.Bound(c => c.JobId).Width("12%");
columns.Bound(c => c.ChangeDate).Width("15%");
columns.Bound(c => c.ChangeUserName).Width("12%");
columns.Bound(c => c.ProjectRole).Width("12%");
columns.Bound(c => c.Text).Width("18%");
})
.AddActionsByPermissions(new[]
{
...
})
.Editable(editable => editable.Mode(GridEditMode.InLine))
.Sortable()
.Resizable(resize => resize.Columns(true))
.Selectable()
.Scrollable(src => src.Height("auto"))
.Pageable(p => p.PageSizes(new[] { 10 }).PageSizes(false))
.Events(e =>
{
e.Change("projectCommentsModule.onRowSelect");
e.DataBinding("projectCommentsModule.onGridDataBinding");
})
.DataSource(dataSource => dataSource
.Ajax()
.ServerOperation(false)
.Read("Commentss", "ProjectComments")
.Model(m =>
{
m.Id(d => d.Id);
m.Field(d => d.ChangeDate).Editable(false).DefaultValue(DateTime.Now);
m.Field(d => d.ChangeUserName).DefaultValue(Model.CurrentUserProjectRole).Editable(false);
m.Field(d => d.ProjectRole).Editable(false).DefaultValue(Model.CurrentUserName);
m.Field(d => d.ProjectNumber).Editable(false).DefaultValue(Model.ProjectNumber);
m.Field(d => d.JobId).DefaultValue(0);
})
.Sort(s => s.Add(c => c.ChangeDate).Descending())
.Create(create => create.Action("AddComment", "ProjectComments"))
.Update(create => create.Action("UpdateComment", "ProjectComments"))
)
)
但是对于可空类型它没有设置,所以当我保存记录时,我得到了服务器空值但是需要得到例如"SomeName",我该如何解决它?
现在,我认为这是 Kendo UI 中的一个错误。截至 2019 年 7 月,我在 Telerik 的博客 post 上发现了这个:
I am afraid that with our last official release we introduced a regression bug that affects applying default values with some fields (in this case string type of fields).
他们将此作为变通解决方案提供,我认为您可以在此处使用它。添加类型为 BeforeEdit
的事件,如下所示:
.Events(e=>e.BeforeEdit("onBeforeEdit"))
<script>
function onBeforeEdit(e) {
if(e.model.isNew()){
e.model.YourField = "SomeName";
}
}
</script>
然后您显然会根据需要更改字段名称和值。