关于dataGrid的问题

liusijiawo 2006-10-26 11:54:14
我写了下面这段代码可是存在问题
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();

}
系统提示不正确 请帮忙解决下问题我已经标出
...全文
94 9 打赏 收藏 举报
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
kangfc 2006-10-26
  • 打赏
  • 举报
回复
从你的代码看,没看到读取数据到ds里的代码,只是实例化了一下,肯定是有问题的.
kangfc 2006-10-26
  • 打赏
  • 举报
回复
应该是“szrq”名称不对,与ds里表对应的字段不一致造成的.
Kyle_Yuan 2006-10-26
  • 打赏
  • 举报
回复
用監看式看一下ds.Tables["s"].Rows[x]["szrq"]是否為Null
喝醉的咖啡 2006-10-26
  • 打赏
  • 举报
回复

// 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 的引用
}
喝醉的咖啡 2006-10-26
  • 打赏
  • 举报
回复
〉从你的代码看,没看到读取数据到ds里的代码,只是实例化了一下,肯定是有问题的.
正解

没错,ds 实例化了(new了)但是没有数据在里面,
string n=ds.Tables["s"].Rows[x]["szrq"].ToString(); [就是这里的SZRQ出错了]
当然要出错

改为
ds = (DataSet) this.dataGrid1.DataSource; 试试看——前提是你的 dataGrid1.DataSource 本来绑定的就是你后面访问的正确的 DataSet

其实你学好了数据绑定,有更容易的实现方式,何必舍近求远?
lsj_zrp 2006-10-26
  • 打赏
  • 举报
回复
你的ds.Tables["s"].Rows[x]["szrq"]可能为null
GXY2005 2006-10-26
  • 打赏
  • 举报
回复
应该是“szrq”名称不对,与ds里表对应的字段不一致造成的.
早起晚睡 2006-10-26
  • 打赏
  • 举报
回复
单步执行一下看看情况
idda 2006-10-26
  • 打赏
  • 举报
回复
焦点不在DataGrid的时候 CurrentRowIndex 会为-1????
发帖
C#

10.8w+

社区成员

.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
帖子事件
创建了帖子
2006-10-26 11:54
社区公告

让您成为最强悍的C#开发者