如何在行更新(..)中设置等于空的字段值



这是我的代码:

    protected void ConfigurationGridView_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        // row's Update button is clicked, but before the GridView control 
        // updates the row
        DropDownList ddlst = 
           ((DropDownList)ConfigurationGridView.Rows[e.RowIndex].FindControl("SubUnitDropDownList"));
        if (ddlst != null)
        {
            ListItem li = ddlst.SelectedItem;
            if (li != null)
            {
                if (Convert.ToInt32(li.Value) == -1)
                {
                    // next line is where the problem is
                    // null doesn't change the old value
                    // it does nothing, how to I change this value to null??
                    e.NewValues["SubUnitId"] = null;
                }
                else
                {
                    // we set the actual value
                    // this works nicely
                    e.NewValues["SubUnitId"] = li.Value;
                }
            }
        }
    }

基本上,我有一个字段通过组合框获取其值,组合中的第一个值表示未分配/不适用/未设置的值,或该记录的 null 值,当我分配其他值时它有效,比如 1、2 或 3,当组合得到 -1 我想清除这个值,即放置空值, 但是上面的行似乎没有任何作用,我已经尝试Nullable<int32>, Int32? value = null, Convert.ToInt32(null)实际上放 0 而不是 null。当我尝试System.DBNull.Value时,我收到一个错误: "类型为'System.DBNull'的对象不能转换为类型'System.Nullable'1[System.Int32]'。

我做错了什么?提前感谢您的投入。

也许你可以试试这个:

e.NewValues["SubUnitId"]=System.DBNull.Value

尝试更改e.NewValues["SubUnitId"] = null;

自:

Nullable<Int32> notSetvalue = null;
e.NewValues["SubUnitId"] = notSetvalue;

如果我没记错的话,您的字段需要一个可为空的 int32 类型,但您直接传递 DBNull 对象。

解决方案原来是

e.NewValues["SubUnitId"] = "";

效果很好。

相关内容

  • 没有找到相关文章

最新更新