FormView,在OnItemInserting或OnItemUpdating事件中以编程方式插入null

时间:2013-06-28 13:16:59

标签: asp.net entity-framework formview

我正在使用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不同,一切正常。

如何插入空值?

2 个答案:

答案 0 :(得分:0)

尝试类似

的内容
  e.NewValues["EntityFrameworkEntityPropertyName"] = System.DBNull.Value;

答案 1 :(得分:0)

好的,我找到了解决方案。 DetailsView事件中的FormViewOnItemUpdating会比较上一个值和新值,如果这些值发生更改,请更新它。当我将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;
}

我的文本框没有直接限制,因为我需要在将它显示给用户之前处理它的值。在插入/更新时,我还需要一些值处理。