DataGridView删除多行选中数据

简介: 思路是找到最先选择和最后选择到的行 ,弄一个for循环,根据这些行的索引值在执行数据的删除.我这里用了EF.            DialogResult result = MessageBox.

思路是找到最先选择和最后选择到的行 ,弄一个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; 


然后今晚博客的编辑器好像抽风了,希望更新维护之后能换个好点的编辑器吧. 

目录
相关文章
|
C#
C#清除DataGridView数据DataGridView中的“无法删除未提交的新行”
C#清除DataGridView数据DataGridView中的“无法删除未提交的新行”
1558 0
C#清除DataGridView数据DataGridView中的“无法删除未提交的新行”
|
6月前
Datagridview 显示当前选中行
Datagridview 显示当前选中行
62 0
C#编程-23:删除datagridview中选中的多行
C#编程-23:删除datagridview中选中的多行
263 0
C#编程-21:DataGridview清空数据
C#编程-21:DataGridview清空数据
486 0
c#Winform修改datatable的列的操作和一些combox绑定实体类,dataGridview的注意点 弹出确认框 弹出的winform出现的位置 load
ds是DataSet 是Datatable的集合 ds.Tables[0]是得到第一张表 然后就是对dt的操作 将Fill_ID列名修改为 “序号” 依次修改列名 combox绑定list 显示combox上的值是用cmb_name 但是 在窗体加载的时候 cmb_name是 它本身的类型名字 而不是空 只有当它上面绑定有真正的值后才会显示。
1369 0