-1

グリッドビューの値を更新しているときに、次のエラー メッセージが表示されました。

"オブジェクト参照がオブジェクト インスタンスに設定されていません"

そして私のC#コードは次のとおりです。

protected void gvDetails_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
    int nmbr = Convert.ToInt32(GridView1.DataKeys[e.RowIndex].Value.ToString());
    TextBox name = (TextBox)GridView1.Rows[e.RowIndex].FindControl("names");
    TextBox dept = (TextBox)GridView1.Rows[e.RowIndex].FindControl("depts");
    TextBox quantity = (TextBox)GridView1.Rows[e.RowIndex].FindControl("quantitys");
    con.Open();
    SqlCommand cmds=new SqlCommand("update erbp set name ='" + name.Text + "',dept ='"+ 
              dept.Text+"',quantity='" + quantity.Text + "' where inmbr=" + nmbr , con);
    cmds.ExecuteNonQuery();
    con.Close();
    GridView1.EditIndex = -1;
    BindEmployeeDetails();
}
4

1 に答える 1

0

コードを更新して、gridview から割り当てたコントロールが null でないことを確認する必要があります。いくつかの例外処理も行います。

protected void gvDetails_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
  try
  {
  int nmbr = Convert.ToInt32(GridView1.DataKeys[e.RowIndex].Value.ToString());
  TextBox name = (TextBox)GridView1.Rows[e.RowIndex].FindControl("names");
  TextBox dept = (TextBox)GridView1.Rows[e.RowIndex].FindControl("depts");
  TextBox quantity = (TextBox)GridView1.Rows[e.RowIndex].FindControl("quantitys");
  //do check that any of your controls here is not null
  if(name!=null && dept!=null && quantity !=null)
  {
      con.Open();
      SqlCommand cmds=new SqlCommand("update erbp set name ='" + name.Text + "',dept ='"+ 
          dept.Text+"',quantity='" + quantity.Text + "' where inmbr=" + nmbr , con);
      cmds.ExecuteNonQuery();
      con.Close();
      GridView1.EditIndex = -1;
      BindEmployeeDetails();
  }
  }
  catch(Exception ex)       
  {
      //do exception handling here. 
  }
}
于 2013-07-20T10:46:05.797 に答える