DataGridView批量删除的问题

zyq85325 2008-07-22 01:33:58
大家好,我是个新人,希望高手们多多赐教。
进入正题,我正做一个数据库编辑程序(WinForm),在实现批量删除功能时遇到麻烦,比如:我选择了3、4、5、6行数据,我在触发UserDeletingRow事件时,所得到的索引号为3、4、5、6、3、4、5、3、4、3,无法正确删除我要删除的数据。
希望高手们能给我说说批量删除的思路,谢谢了!
P.S. 我不想用复选框来实现,就是用DataGridView自带的允许用户删除行的属性来实现这个功能,还有我用的是SqlConnection带来连接的SQL Server 2000数据库。
...全文
317 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
qjlsharp 2008-07-22
  • 打赏
  • 举报
回复
我这个方法简单先在这个事件中得到你要点击的数据行的索引

string id;
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex > -1)
{
id = dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString();

}
}
private void button2_Click(object sender, EventArgs e)
{
string del = "delete from DC_CompanyInfo where Com_id=" + id;//把这个全局变量的id传进来
GX(del);//更新数据库的一个方法,这里我不写了

应该是楼主想要的吧,这样做,你想删几个就删几个,还方便
回帖是一种美德!
zyq85325 2008-07-22
  • 打赏
  • 举报
回复
请问1楼的大侠
private void allDataView()
{
string strConn = "user id=sa;password=;server=" + ip + ";database=" + wellname + ";connect timeout=30";
string strSql = "select * from " + tablename;
SqlConnection objConn = new SqlConnection(strConn);
SqlCommand objCom = new SqlCommand(strSql);
try
{
objConn.Open();
SqlDataAdapter data = new SqlDataAdapter(strSql, strConn);
DataSet ds = new DataSet();
data.Fill(ds, tablename);
dgvData.DataSource = ds;
dgvData.DataMember = ds.Tables[0].TableName;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
objConn.Close();
}
}
这个是我写的datagridview显示数据的方法,我这个里已经绑定了ds,但是用你的方法的时候ds.HasChanges()始终出不来,是不是我绑定哪里错了???
zyq85325 2008-07-22
  • 打赏
  • 举报
回复
下午比较忙,谢谢1楼和3楼两位,我回家后试一下
chaye12 2008-07-22
  • 打赏
  • 举报
回复
1楼的是正解,主要就是commandbuilding这句一定姚加上否则无法更新,还有一点,如果是ACCESS的话,声明连接字符串的时候一定要有足够的权限,这点也很重要!
shinychen 2008-07-22
  • 打赏
  • 举报
回复
3楼好厉害~~~
拐爷 2008-07-22
  • 打赏
  • 举报
回复
建议: 可以在事件中对datagridview进行一下简单的遍历,如下代码中,对变量i做一下处理就行了
 for (int i = 0; i < this.dgvSource.Rows.Count; )//dgvSource为dataGridView
{
row = this.dgvSource.Rows[i];

if (row.Selected)
{
//删除...
this.dgvSource.Rows.Remove(row);
}
else
i++;



}
leixueqiyi 2008-07-22
  • 打赏
  • 举报
回复
楼上的就可以,简单明了
lsj_zrp 2008-07-22
  • 打赏
  • 举报
回复
banprivate void DataGridViewSave()
{
string strConnection = "server=.;uid=sa;pwd=;database=Test;";
if (ds.HasChanges())
{
try
{
SqlDataAdapter adapter = new SqlDataAdapter("select * from tab_Test", new SqlConnection(strConnection));

SqlCommandBuilder cmdBuilder = new SqlCommandBuilder(adapter);

adapter.DeleteCommand = new SqlCommand("", new SqlConnection(strConnection));
adapter.InsertCommand = new SqlCommand("", new SqlConnection(strConnection));
adapter.UpdateCommand = new SqlCommand("", new SqlConnection(strConnection));
adapter.SelectCommand = new SqlCommand("select * from tab_Test", new SqlConnection(strConnection));

adapter.DeleteCommand = cmdBuilder.GetDeleteCommand();
adapter.InsertCommand = cmdBuilder.GetInsertCommand();
adapter.UpdateCommand = cmdBuilder.GetUpdateCommand();
adapter.Update(ds);
}
catch (Exception ex)
{
throw ex;
}
}
}
最后保存的时候调用就行了,ds是你绑定到datagridview的数据源,
“select * from tab_Test”红色是你的表名
这个只能针对单个表做批量操作,并且表要有关键字

111,092

社区成员

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

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

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