使用 GridView 编辑器表单中的 SetEditItemTemplateContent 更新日期时间时,将 NULL 值发送到控制器
NULL value is sent to Controller while updating datetime rendered using SetEditItemTemplateContent from GridView Editor Form
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 值被发送到控制器而不是修改后的日期时间值。
请提出解决此问题的方法。
根据绑定的Model属性指定编辑器名称:
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 方法)。
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 值被发送到控制器而不是修改后的日期时间值。
请提出解决此问题的方法。
根据绑定的Model属性指定编辑器名称:
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 方法)。