我正在使用FormView控件,我想通过FormViewUpdateEventArgs参数中的NewValues dictioanry以编程方式在OnItemInserting和OnItemUpdating事件中插入null值。但是,如果我使用
protected void FormView_ItemUpdating(object sender, FormViewUpdateEventArgs e)
{
e.NewValues["EntityFrameworkEntityPropertyName"] = null;
}
忽略此类修改,不更新数据库列并保留其旧值。 EntityFramework实体属性为:Type Int32,Nullable True,StoreGeneratedPattern None。
如果我通过Bind()将TextBox控件直接绑定到属性,则会很好地插入空值。此外,如果值与null不同,一切正常。
如何插入空值?
答案 0 :(得分:0)
尝试类似
的内容 e.NewValues["EntityFrameworkEntityPropertyName"] = System.DBNull.Value;
答案 1 :(得分:0)
好的,我找到了解决方案。 DetailsView
事件中的FormView
和OnItemUpdating
会比较上一个值和新值,如果这些值发生更改,请更新它。当我将null放入e.NewValues
时,虽然我的TextBox
不受Bound
函数限制,但e.OldValues["EntityFrameworkEntityPropertyName"]
不存在(表示空),而NewValues
中null也是如此,因此列不会更新。
我只是将e.OldValues["EntityFrameworkEntityPropertyName"]
设置为任何内容(但类型相同),现在插入空值可以正常工作。
protected void FormView_ItemUpdating(object sender, FormViewUpdateEventArgs e)
{
e.OldValues["EntityFrameworkEntityPropertyName"] = -1
e.NewValues["EntityFrameworkEntityPropertyName"] = null;
}
我的文本框没有直接限制,因为我需要在将它显示给用户之前处理它的值。在插入/更新时,我还需要一些值处理。