在使用GridView编辑器表单

时间:2017-08-08 10:40:18

标签: asp.net-mvc devexpress model-binding devexpress-mvc

DevExpress 17.1

我在GridView中有一个DateTime列,它将日期时间显示为MM / dd / yyyy hh:mm:ss。

我已使用SetEditItemTemplateContent在EditorForm中使用DateEdit控件来更新DateTime字段。

settings.Columns.Add(column =>
    {
        column.FieldName = "C_DateTime";
        column.Caption = "C_DateTime";
        column.HeaderStyle.HorizontalAlign = HorizontalAlign.Left;
        column.PropertiesEdit.DisplayFormatString = "dd/MM/yyyy hh:mm:ss";

        column.SetEditItemTemplateContent(c =>
        {

            var workDate = (DateTime?)DataBinder.Eval(c.DataItem, "C_DateTime");

            Html.DevExpress().DateEdit(
                dateEdit =>
                {
                    var keyValue = c.KeyValue == null? 0 : c.KeyValue;

                    dateEdit.Name = "C_DateTime" + keyValue.ToString();
                    dateEdit.Properties.UseMaskBehavior = true;
                    dateEdit.Properties.EditFormat = EditFormat.Custom;
                    dateEdit.Properties.EditFormatString = "dd/MM/yyyy hh:mm tt";
                    dateEdit.Properties.TimeSectionProperties.Visible = true;
                    dateEdit.Properties.TimeSectionProperties.TimeEditProperties.EditFormat = EditFormat.Custom;
                    dateEdit.Properties.TimeSectionProperties.TimeEditProperties.EditFormatString = "hh:mm tt";
                    dateEdit.Date = DateTime.Now;
                }
                ).Bind(workDate).Render();
        });
    });

当我在EditorForm中更改日期时间值并单击“更新”按钮时,将向控制器发送NULL值,而不是修改后的日期时间值。

请建议一种解决此问题的方法。

1 个答案:

答案 0 :(得分:1)

根据绑定模型的属性指定编辑器的名称:

Html.DevExpress().DateEdit(dateEdit => {
    //var keyValue = c.KeyValue == null? 0 : c.KeyValue;
    //dateEdit.Name = "C_DateTime" + keyValue.ToString();
    dateEdit.Name = "C_DateTime";
    ...
    //or
    dateEdit.Name = column.FieldName;
}).Bind(workDate).Render();

请注意,您可以通过column.PropertiesEdit()。DateEdit设置添加必要的设置(不使用SetEditItemTemplateContent方法)。