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值,而不是修改后的日期时间值。
请建议一种解决此问题的方法。
答案 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方法)。