これは私のコードです:
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;
}
}
}
}
基本的に、コンボボックスを介して値を取得する1つのフィールドがあり、コンボの最初の値は、割り当てられていない/適用されない/設定されていない値、またはそのレコードのnull値を表し、他の値、たとえば1を割り当てると機能します、2、または 3 の場合、コンボが -1 になると、この値をクリアしたい、つまり null 値を入れたいのですが、上記の行は何もしないようですNullable<int32>, Int32? value = null, Convert.ToInt32(null)
。実際に null の代わりに 0 を入れてみました。System.DBNull.Value を試してみると、「'System.DBNull' 型のオブジェクトは 'System.Nullable`1[System.Int32]' 型に変換できません。」というエラーが表示されます。
私は何を間違っていますか?ご意見をお寄せいただきありがとうございます。