Kendo MVC表格行内编辑:新增行时DateTime.Now无法实时更新
解决Kendo MVC Grid行内编辑新增时DateTime字段默认值为当前时间的问题
核心思路
借助Kendo Grid的edit事件,在新增行触发编辑状态时,手动获取当前时间并赋值给对应的DateTimePicker控件,绕过页面加载时生成的静态默认值。
具体实现步骤
绑定Grid的Edit事件
在MVC Grid配置中添加事件绑定,指定自定义的编辑处理函数:@(Html.Kendo().Grid<YourModel>() .Name("TargetGrid") .Columns(columns => { columns.Bound(p => p.Id); columns.Bound(p => p.RecordTime).EditorTemplateName("DateTimePicker"); columns.Command(cmd => { cmd.Edit(); cmd.Destroy(); }); }) .ToolBar(toolbar => toolbar.Create()) .Editable(editable => editable.Mode(GridEditMode.InLine)) .Events(events => events.Edit("onGridEdit")) )编写JavaScript处理逻辑
在页面脚本中实现事件处理函数,仅对新增行设置当前时间:function onGridEdit(e) { // 判断是否为新增记录 if (e.model.isNew()) { // 定位当前行内的DateTimePicker控件(替换RecordTime为你的字段名) var datePicker = e.container.find("[name='RecordTime']").data("kendoDateTimePicker"); if (datePicker) { // 设置为当前时间 datePicker.value(new Date()); } } }
关键细节说明
e.model.isNew():Kendo Grid模型内置方法,精准区分新增行与编辑已有行,避免干扰正常编辑操作。e.container:当前编辑行的DOM容器,通过它可以精准定位到行内的编辑器控件,不会影响其他行。[name='RecordTime']:依据模型字段的name属性查找控件,需与你编辑器模板中设置的name值保持一致。
内容的提问来源于stack exchange,提问作者Jordan
相关产品推荐
相关产品推荐

