我写了下面这段代码可是存在问题
  ds=new DataSet(); 
  DialogResult result;
  result=MessageBox.Show("是否确定删除","提示信息",MessageBoxButtons.YesNo);
  if(result==DialogResult.Yes)
{
int x=this.dataGrid1.CurrentRowIndex;
string n=ds.Tables["s"].Rows[x]["szrq"].ToString();  [就是这里的SZRQ出错了]
SqlConnection con=db.condb();
con.Open();
SqlCommand cmd=new SqlCommand("delete from sc_15xj where szrq='"+n+"'",con);
cmd.ExecuteNonQuery();
con.Close();
MessageBox.Show("删除成功");
ds.Clear();
this.o();

}
系统提示不正确 请帮忙解决下问题我已经标出

解决方案 »

  1.   

    用監看式看一下ds.Tables["s"].Rows[x]["szrq"]是否為Null
      

  2.   

    应该是“szrq”名称不对,与ds里表对应的字段不一致造成的.
      

  3.   

    焦点不在DataGrid的时候 CurrentRowIndex 会为-1????
      

  4.   

    应该是“szrq”名称不对,与ds里表对应的字段不一致造成的.
      

  5.   

    你的ds.Tables["s"].Rows[x]["szrq"]可能为null
      

  6.   

    〉从你的代码看,没看到读取数据到ds里的代码,只是实例化了一下,肯定是有问题的.
    正解没错,ds 实例化了(new了)但是没有数据在里面,
    string n=ds.Tables["s"].Rows[x]["szrq"].ToString();  [就是这里的SZRQ出错了]
    当然要出错改为
    ds = (DataSet) this.dataGrid1.DataSource; 试试看——前提是你的 dataGrid1.DataSource 本来绑定的就是你后面访问的正确的 DataSet其实你学好了数据绑定,有更容易的实现方式,何必舍近求远?
      

  7.   


      // ds=new DataSet();  ds 不需要实例化,定义即可
      DialogResult result;
      result=MessageBox.Show("是否确定删除","提示信息",MessageBoxButtons.YesNo);
      if(result==DialogResult.Yes)
      {
        DataSet ds = this.dataGrid1.DataSource;
        int x=this.dataGrid1.CurrentRowIndex;
        string n=ds.Tables["s"].Rows[x]["szrq"].ToString();  [就是这里的SZRQ出错了]
        // .... .... 
        // ds.Clear(); 如果 clear,dataGrid1 里面的数据也就 clear 了,因为 ds 实际上是对 dataGrid1.DataSource 的引用
      }