思路是找到最先选择和最后选择到的行 ,弄一个for循环,根据这些行的索引值在执行数据的删除.
我这里用了EF.
DialogResult result = MessageBox.Show("确定删除吗?", "删除", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (result == DialogResult.Yes)
{
//选中第一行的索引
var first = dataGridView1.Rows.GetFirstRow(DataGridViewElementStates.Selected);
//选中最后一行的索引
var end = dataGridView1.Rows.GetLastRow(DataGridViewElementStates.Selected);
for (int i = first; i <= end; i++)
{
int p_id = int.Parse(this.dataGridView1.Rows[i].Cells["u_id"].Value.ToString());
//1.0 EF 推荐删除方式 - 先查,再删
userinfo gf = db.userinfo.Where(u => u.u_id == p_id).FirstOrDefault();
//1.2 将实体对象删除(就是将 容器中的 代理对象的 State改成 Deleted)
db.userinfo.Remove(gf);
}
//1.3 将EF容器里所有的对象 根据 State 属性值,生成不同sql语句,更新到数据库
db.SaveChanges();
MessageBox.Show("OK");
}
else
{
return;
}
PS:
DataGridView里的列有combox的话是不让你FullRowSelect=true的,这时候
if(DataGridView.FullRowSelect=false)
{
switch(操作方法)
{
case"点那个DataGridView中的行标题的列":
return正常的起始和终止索引值
break;
case"":
return有问题的起始和终止索引值 --都是-1
break;
}
}
然后今晚博客的编辑器好像抽风了,希望更新维护之后能换个好点的编辑器吧.