不给分就没人回答哦 什么世道呀 我都没分了。。。

ilj1416 2006-05-25 01:46:27
代码如下,想实现在datagrid里面选中一行就删除的功能:

private void button7_Click(object sender, System.EventArgs e) //删除数据
{
int iIndex = dataGrid1.CurrentRowIndex;
DataRow dr = dataSet1.Tables["123"].Rows[iIndex];
dataSet1.Tables["123"].Rows[iIndex].Delete();
int erNum = sqlDataAdapter1.DeleteCommand.ExecuteNonQuery();
if(erNum==1)
{
MessageBox.Show("删除成功!","提示");
}
else
{
MessageBox.Show("删除失败!","提示");
}
}

报错:未将对象引用到设置对象的实例
请问怎么修改哦?
...全文
565 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
adaailpll 2006-05-26
  • 打赏
  • 举报
回复
mark
Darren_chen 2006-05-26
  • 打赏
  • 举报
回复
顶一下
darklight2008 2006-05-26
  • 打赏
  • 举报
回复
mark...
wls12342004 2006-05-26
  • 打赏
  • 举报
回复
很正常呀,我给分都没人回答呀
ashiw 2006-05-26
  • 打赏
  • 举报
回复
m_sqlDataAd.DeleteCommand =new OracleCommandBuilder(m_sqlDataAd).GetDeleteCommand();
楼主看到这句应该明白了。
ashiw 2006-05-26
  • 打赏
  • 举报
回复
楼主没向数据库提交删除命令。只是在数据集里删了就Update会出错了。
bhwhy 2006-05-25
  • 打赏
  • 举报
回复
1 DataSet.AcceptChanges(); 一定不能在update的前面,要不要表不会更新。
2 表中一定要有主键,添加完之后如果你这个dataAdapter是使用程序中的工具生成的,重新生成一遍
楼主在论坛上搜一下吧,很多的你这样的问题
ilj1416 2006-05-25
  • 打赏
  • 举报
回复
我笨呀。。哎。。可怜的人哦。。
ilj1416 2006-05-25
  • 打赏
  • 举报
回复
加了 还是不行 刚才我同事说要我改成这样
int iIndex = dataGrid1.CurrentRowIndex;

DataRow dr = dataSet1.Tables["123"].Rows[iIndex];
dataSet1.Tables["123"].Rows[iIndex].Delete();
int erNum = sqlDataAdapter1.Update(dataSet1,"123");
if(erNum==1)
{
MessageBox.Show("删除成功!","提示");
}
else
{
MessageBox.Show("删除失败!","提示");
}

又换了个错:当传递具有已删除行的datarow集合时,更新要求有效的deletecommand
dragonlus 2006-05-25
  • 打赏
  • 举报
回复
忘記了,剛才在VB.NET中看了帖子
bhwhy 2006-05-25
  • 打赏
  • 举报
回复
没弄错,VB.NET.不会吧,楼主还没搞定...
ilj1416 2006-05-25
  • 打赏
  • 举报
回复
楼上的?怎么有dim呀。。是我弄错了还是你弄错了- -
dragonlus 2006-05-25
  • 打赏
  • 举报
回复
SqlCommandBuilder CB = new SqlCommandBuilder(this.sqlDataAdapter1);
加到刪除中
dragonlus 2006-05-25
  • 打赏
  • 举报
回复
dim cmd as sqlcommand
dim constr as string=""'連接字段
dim conn as sqlconnection =new sqlconnection(constr)
cmd.connection=conn
cmd.commandtext=""'SQL語句
sqlDataAdapter1.DeleteCommand=cmd
sqldataadapter1.deletecommand.execu......
ilj1416 2006-05-25
  • 打赏
  • 举报
回复
楼上的 再笑打你的哦 郁闷 我把代码全部贴出来好了 你们看看吧 前面的三个功能都实现了 就差删除了。。。是谁说删除最简单的哦 还偶弄了这半天。。。
static void Main()
{
Application.Run(new Form1());
}

private void button1_Click(object sender, System.EventArgs e) //查询
{
try
{
this.sqlConnection1 = new SqlConnection("server=localhost;uid=sa;pwd=sa;database=jxcbook"); //实例化
this.sqlDataAdapter1 = new SqlDataAdapter("select * from 商品清单",this.sqlConnection1);
this.sqlDataAdapter1.Fill(this.dataSet1,"123");
this.dataGrid1.DataSource = this.dataSet1.Tables["123"].DefaultView;
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}


private void button4_Click(object sender, System.EventArgs e) //添加数据
{
try
{
SqlCommandBuilder CB = new SqlCommandBuilder(this.sqlDataAdapter1);
int TempID = int.Parse(dataSet1.Tables["123"].Rows[0]["货号"].ToString())+1;
DataRow dr = dataSet1.Tables["123"].NewRow();
dr["货号"]=textBox1.Text;
dr["条码"]=textBox2.Text;
dr["拼音编码"]=textBox3.Text;
dataSet1.Tables["123"].Rows.Add(dr);
int erNum = sqlDataAdapter1.Update(dataSet1,"123");
if(erNum==1)
{
MessageBox.Show("添加成功!","提示");
}
else
{
MessageBox.Show("添加失败!","提示");
}



}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}

private void button5_Click(object sender, System.EventArgs e) //修改数据
{
try
{
int iIndex = dataGrid1.CurrentRowIndex; //选中某行
SqlCommandBuilder CB = new SqlCommandBuilder(this.sqlDataAdapter1);
int TempID = int.Parse(dataSet1.Tables["123"].Rows[0]["货号"].ToString())+1;
DataRow dr = dataSet1.Tables["123"].Rows[iIndex];
dr["货号"]=textBox1.Text;
dr["条码"]=textBox2.Text;
dr["拼音编码"]=textBox3.Text;
int erNum = sqlDataAdapter1.Update(dataSet1,"123");
if(erNum==1)
{
MessageBox.Show("修改成功!","提示");
}
else
{
MessageBox.Show("修改失败!","提示");
}



}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}

private void button7_Click(object sender, System.EventArgs e) //删除数据
{
try
{
int iIndex = dataGrid1.CurrentRowIndex;
//this.sqlDataAdapter1 = new SqlDataAdapter("select * from 商品清单",this.sqlConnection1);
DataRow dr = dataSet1.Tables["123"].Rows[iIndex];
dataSet1.Tables["123"].Rows[iIndex].Delete();
int erNum = sqlDataAdapter1.DeleteCommand.ExecuteNonQuery();
if(erNum==1)
{
MessageBox.Show("删除成功!","提示");
}
else
{
MessageBox.Show("删除失败!","提示");
}


}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}



private void dataGrid1_CurrentCellChanged_1(object sender, System.EventArgs e) //确认选中某行
{
int iIndex = dataGrid1.CurrentRowIndex;

textBox1.Text = dataGrid1[iIndex,0].ToString();
textBox2.Text = dataGrid1[iIndex,1].ToString();
textBox3.Text = dataGrid1[iIndex,2].ToString();
}
}
bhwhy 2006-05-25
  • 打赏
  • 举报
回复
^_^
ilj1416 2006-05-25
  • 打赏
  • 举报
回复
int erNum = sqlDataAdapter1.DeleteCommand.ExecuteNonQuery();
这句错了。。报的错是:未将对象引用设置到对象的实例
sqlDataAdapter1.DeleteCommand=未定义的值。。

我好象没写open的语句。。
前面的查询 添加 修改功能都实现了 就差这个删除了。。郁闷哦。。

vshake 2006-05-25
  • 打赏
  • 举报
回复
你设断点单步调试,告诉我们是那句错了?

dataSet1.Tables["123"].Rows[iIndex].Delete();//你这句就删除了Rows。
int erNum = sqlDataAdapter1.DeleteCommand.ExecuteNonQuery();//你这句的sqlDataAdapter1和sqlDataAdapter1.DeleteCommand是不是NULL?

还有你的CONNECTION是不是一直OPEN着的????
bhwhy 2006-05-25
  • 打赏
  • 举报
回复
删除是要写的啊
ilj1416 2006-05-25
  • 打赏
  • 举报
回复
被选中了 iIndex值是10。。又调试了一下 刚看错了 可还是报一样的错 总说未实例化 是不是要new一下 但不知道new什么。。
加载更多回复(8)

110,561

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

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

试试用AI创作助手写篇文章吧