博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
winform代码:关联窗体数据更新,删除dataGridview中选中的一行或多行
阅读量:6941 次
发布时间:2019-06-27

本文共 3222 字,大约阅读时间需要 10 分钟。

一、关联窗体数据更新

关联窗体数据修改时,如果一个为总体数据显示窗体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

  

转载于:https://www.cnblogs.com/wuling129/p/5458742.html

你可能感兴趣的文章
TiDB 源码阅读系列文章(九) Hash Join
查看>>
【个人向整理】Promise
查看>>
用 Algolia DocSearch 轻松实现文档全站搜索
查看>>
Kibana 用户指南(安装Kibana)
查看>>
阿里CEO张勇:我们理解AI是Alibaba Intelligence
查看>>
mysql分表、分区
查看>>
关于do_brk()分析
查看>>
使用原生JS进行前后端同构
查看>>
【MySQL学习笔记】 MySQL 建立索引
查看>>
Mac开发React Native ---环境搭建
查看>>
[译] 如何手动启动 Angular 程序
查看>>
【数据结构】Java语言描述-单链表的基本操作
查看>>
[翻译]基于Webpack4使用懒加载分离打包React代码
查看>>
Android系统源码分析-JNI
查看>>
Linux下无法正常安装和删除Nodejs的解决方法
查看>>
利用闲置 PC 搭建 NAS 媒体中心 远程下载
查看>>
fishshell中virtualenv配置的小问题
查看>>
提高效率的VScode插件
查看>>
2017-09-24 前端日报
查看>>
TiDB 助力一面数据实现消费领域的决策分析平台
查看>>