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
    

      

  • 相关阅读:
    Springboot 之 自定义配置文件及读取配置文件
    SQLSERVER系统视图 sql server系统表详细说明
    MySQL Workbench建表时 PK NN UQ BIN UN ZF AI 的含义
    使用Ecplise git commit时出现"There are no stages files"
    maven添加sqlserver的jdbc驱动包
    java将XML文档转换成json格式数据
    java将XML文档转换成json格式数据
    cannot be resolved. It is indirectly referenced from required .class files
    org.codehaus.jackson.map.JsonMappingException: Can not construct instance of java.util.Date from String value '2012-12-12 12:01:01': not a valid representation (error: Can not parse date "2012-12-
    @Autowired注解和静态方法 NoClassDefFoundError could not initialize class 静态类
  • 原文地址:https://www.cnblogs.com/wuling129/p/5458742.html
Copyright © 2011-2022 走看看