You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kendo MVC表格行内编辑:新增行时DateTime.Now无法实时更新

解决Kendo MVC Grid行内编辑新增时DateTime字段默认值为当前时间的问题

核心思路

借助Kendo Grid的edit事件,在新增行触发编辑状态时,手动获取当前时间并赋值给对应的DateTimePicker控件,绕过页面加载时生成的静态默认值。

具体实现步骤

  1. 绑定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"))
    )
    
  2. 编写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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 04:25:17