• DataGridView删除多行选中数据


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


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

  • 相关阅读:
    将各种简单算法组合,使自己更加灵活的使用它
    转载 原反补码
    迭代器是神马东西
    进程 线程
    STL中的容器是如何实现的,如何存储的
    可以实例化对象,但是不能被继承的类
    float的存储及和int的转化
    对批处理、多道操作系统的理解
    STL set、map实现为什么要以红黑树为底层实现机制?
    c 多线程
  • 原文地址:https://www.cnblogs.com/zeusro/p/3572646.html
Copyright © 2020-2023  润新知