zoukankan      html  css  js  c++  java
  • winform代码:关联窗体数据更新,删除dataGridview中选中的一行或多行

    一、关联窗体数据更新

    关联窗体数据修改时,如果一个为总体数据显示窗体A,另一个为详细修改窗体B,从A进入B,在B中对数据进行修改,然后返回A,这时A窗体的数据需要更新。

    我采用最简单的方法,首先保证每个窗体只有一个(网上代码很多),每次激活窗体时就重新载入数据,从A进入B的代码如下:

    #region 激活或创建用户管理层面
                bool isExit = false;
                foreach (Form childFrm in this.MdiParent.MdiChildren)
                {
                    //用子窗体的Name进行判断,如果已经存在则将他激活
                    if (childFrm.Name == "Form_UserManage")
                    {
                        if (childFrm.WindowState == FormWindowState.Minimized)
                            childFrm.WindowState = FormWindowState.Normal;
                        childFrm.Activate();
                        isExit = true;
                    }
                }
                if (isExit == false)
                {
                    // 如果该窗体不存在则新生成一个库存查询窗体
                    Form_UserManage newFrm = new Form_UserManage();
                    newFrm.MdiParent = this.MdiParent;
                    newFrm.Show();
                }
                this.Close();
                #endregion
    

    也可以让B成为模式窗体,比较简单。上面A和B是独立的两个窗体,都在同一级菜单下时使用较好。  

    一、删除dataGridview中选中的一行或多行

    参考博文:http://blog.sina.com.cn/s/blog_8b94db9c01015yim.html

    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);
    //使用获得的ID删除数据库的数据
    string SQL = "delete from UserInfo where UserId='"+ID.ToString()+"'";
    int s =Convert.ToInt32(cl.Execute(SQL)); //cl是操作类的一个对像,Execute()是类中的一个方法
    if (s!=0)
    {
    MessageBox.Show("成功删除选中行数据!");
    }
    }
    break;
    case DialogResult.No:
    break;
    }
    

     在上面代码中,需要按照dataGridview中的列下标进行筛选,如果是删除就进行删除,否则就不进行删除。操作时发现下标编号默认是文本框是编号【1,2,3】,行中有button,button编号【1,2,3】,这时按列来确定是否是选择的内容时就会出错。后来发现是dataGridview初始化时少了一个属性:

     this.dgv_AllUsers.AutoGenerateColumns = false;

    添加上这行代码后可以按照统一下标操作。郁闷了半天才找到原因。

      #region 删除选中的行
                string buttonText = this.dgv_AllUsers.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();
                //int CIndex = e.ColumnIndex;
                //按钮所在列为第五列,列下标从0开始的  
                if (buttonText == "删除")
                {
                    //获取在同一行第一列的单元格中的字段值  
                    string _UID =this.dgv_AllUsers[0, e.RowIndex].Value.ToString();
                    string _Uname = this.dgv_AllUsers[1, e.RowIndex].Value.ToString();
                    //MessageBox.Show(_UID.ToString());
                    DialogResult RSS = MessageBox.Show(this, "确定要删除选中行( ID为" + _UID + ":,名称为:" + _Uname + " )的数据码?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
                    switch (RSS)
                    {
                        case DialogResult.Yes:
                            jinlongDLL.DBHelper db = new DBHelper();
                            string SQL = "delete from users where id='" + _UID + "';";
                            int s = db.ExecuteSql(SQL);
                            if (s != 0)
                            {
                                MessageBox.Show("成功删除选中行数据!");
                            }
                            dgv_AllUsers_Init();//载入用户数据
                            break;
                        case DialogResult.No:
                            break;
                    }
                }
                #endregion
    

      

  • 相关阅读:
    HTTP协议简介
    HTTP缓存带来的“bug”--HTTP 协议 Cache-Control
    PHP7变量的内部实现(一)
    PHP 简单的加密解密方法
    php 制作圆形图片
    python解决图的最短路径问题
    PHP中文关键词匹配
    D25
    D24
    D23
  • 原文地址:https://www.cnblogs.com/wuling129/p/5458742.html
Copyright © 2011-2022 走看看