机房收费系统遇到的问题(一) datagridview一次性移除多行选中数据,同时删除数据库数据

    datagridview一次性移除多行选中数据,同时删除数据库数据

    源码:


   

        private void btnDel_Click(object sender, EventArgs e)
        {
            DialogResult RSS = MessageBox.Show(this, "确定要删除选中行数据码?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
            switch (RSS)
            {
                case DialogResult.Yes:
                    for (int i = this.dataGridView1.SelectedRows.Count; i > 0; i--)
                    {
                        int ID = Convert.ToInt32(dataGridView1.SelectedRows[i - 1].Cells[0].Value);
                        dataGridView1.Rows.RemoveAt(dataGridView1.SelectedRows[i - 1].Index);
                        //调用后台删除方法,删除数据库数据
                        Facade.AlterOperatorFa delOperator = new Facade.AlterOperatorFa();
                        Entity.userEntity userInfo = new Entity.userEntity();
                        userInfo.userID = ID.ToString().Trim();
                        delOperator.DelOpe(userInfo);
                    }
                    break;
                case DialogResult.No:
                    break;
            }
        }



    很好用,就是一点不方便,这么写只能用于删除datagridview绑定数据源的时候,当我们把List集合的值赋给datagridview显示再用以上代码删除就会报如下错误




    机房收费系统遇到的问题(一) datagridview一次性移除多行选中数据,同时删除数据库数据_第1张图片




    所以,这个时候代码就得改写了,


    在List中删除数据,后重新绑定控件,

    因为还要求删除数据库中数据,所以,直接获取选中行的ID,删除数据库中数据,重新返回List赋给datagridview完事儿



   

        private void btnDel_Click(object sender, EventArgs e)
        {
            DialogResult RSS = MessageBox.Show(this, "确定要删除选中行数据码?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
            switch (RSS)
            {
                case DialogResult.Yes:
                    for (int i = this.dataGridView1.SelectedRows.Count; i > 0; i--)
                    {
                        int ID = Convert.ToInt32(dataGridView1.SelectedRows[i - 1].Cells[0].Value);
                        //调用后台删除方法,删除数据库数据
                        Facade.AlterOperatorFa delOperator = new Facade.AlterOperatorFa();
                        Entity.userEntity userInfo = new Entity.userEntity();
                        userInfo.userID = ID.ToString().Trim();
                        delOperator.DelOpe(userInfo);
                    }
                    comboBox1_SelectedIndexChanged(sender, e);//for循环里删除了一句话,在此加了这行语句
                    break;
                case DialogResult.No:
                    break;
            }
        }





        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (comboBox1.SelectedIndex == 0)
            {
                //level是1的
                Facade.QueryOperatorInfo opeFa1 = new Facade.QueryOperatorInfo();
                List<userEntity> userList1 = new List<userEntity>();
                Entity.userEntity userInfo1 = new userEntity();
                userInfo1.userLevel = "1";
                userList1 = opeFa1.getUsers(userInfo1);
                //level是2的
                Facade.QueryOperatorInfo opeFa2 = new Facade.QueryOperatorInfo();
                List<userEntity> userList2 = new List<userEntity>();
                Entity.userEntity userInfo2 = new userEntity();
                userInfo2.userLevel = "2";
                userList2 = opeFa2.getUsers(userInfo2);
                //合并level==1和level==2的list集合
                List<userEntity> resultEnd = userList1.Concat(userList2).ToList();
                dataGridView1.DataSource = (from p in resultEnd
                                            select new
                                            {
                                                用户ID = p.userID,
                                                用户级别 = p.userLevel
                                            }).ToList();
            }
            else if (comboBox1.SelectedIndex == 1)
            {
                Facade.QueryOperatorInfo opeFa = new Facade.QueryOperatorInfo();
                List<userEntity> userList = new List<userEntity>();
                Entity.userEntity userInfo = new userEntity();
                userInfo.userLevel = "2";
                userList = opeFa.getUsers(userInfo);
                dataGridView1.DataSource = (from p in userList
                                            select new
                                            {
                                                用户ID = p.userID,
                                                用户级别 = p.userLevel
                                            }).ToList();
            }
            else if (comboBox1.SelectedIndex == 2)
            {
                Facade.QueryOperatorInfo opeFa = new Facade.QueryOperatorInfo();
                List<userEntity> userList = new List<userEntity>();
                Entity.userEntity userInfo = new userEntity();
                userInfo.userLevel = "1";
                userList = opeFa.getUsers(userInfo);
                dataGridView1.DataSource = (from p in userList
                                            select new
                                            {
                                                用户ID = p.userID,
                                                用户级别 = p.userLevel
                                            }).ToList();
            }
        }



      就是下面这个窗体!

   

   机房收费系统遇到的问题(一) datagridview一次性移除多行选中数据,同时删除数据库数据_第2张图片

   

你可能感兴趣的:(数据库,datagrid,C#)