C# DataGridView中实现勾选存储数据和右键删除数据(示例代码)

DataGridView事件CellContentClick

触发dataGridView的CellContentClick事件,并且在事件中调用Edit 方法。
实现DataGridView中添加CheckBox后不满足条件去掉勾选
并且实现勾选后将绑定数据的存入表的动作

点击确定后去掉勾选

Main.cs

 private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
        {
            switch (this.tabControl1.SelectedIndex)
            {
                //case 0:
                //    //显示数据
                //    ShowVlues();
                //    break;

                case 1:

                    TableDefine.Initial_TableE();
                    for (int i = 0; i <= TableDefine.tGridField.Length - 1; i++)
                    {
                        cboSearch.Items.Add(TableDefine.tGridField[i].sCaption);
                        cboSearchList.Items.Add(TableDefine.tGridField[i].sFieldName);
                    }
                    if (cboSearch.Items.Count > 0)
                    {
                        cboSearch.SelectedIndex = 0;
                    }
                    //取机种
                    DataTable ModelDT = fslConn.GetAllModel();
                    if (ModelDT.Rows.Count > 0)
                    {
                        foreach (DataRow item in ModelDT.Rows)
                        {
                            cboModel.Items.Add(item[0]);
                        }
                    }

                    //取流程
                    DataTable RouteDT = fslConn.GetAllRoute();
                    if (RouteDT.Rows.Count > 0)
                    {
                        foreach (DataRow item in RouteDT.Rows)
                        {
                            cboRoute.Items.Add(item[0]);
                        }
                    }

                    //显示数据
                    ShowEVlues();
                    break;
            }
        }

        //取数据显示
        void ShowEVlues()
        {
            string sFieldName = string.Empty;
            string sFieldText = string.Empty;
            if (cboSearch.SelectedIndex > -1 && txtSearch.Text.Trim() != "")
            {
                sFieldName = cboSearchList.Items[cboSearch.SelectedIndex].ToString();
                sFieldText = txtSearch.Text.Trim();
            }
            if (string.IsNullOrWhiteSpace(sFieldText))
                gvDataE.DataSource = fslConn.GetAllFslEName();
            else
                gvDataE.DataSource = fslConn.GetAllFslEName(sFieldName, sFieldText);
            //栏位title
            for (int i = 0; i <= gvDataE.Columns.Count - 1; i++)
            {
                gvDataE.Columns[i].Visible = false;
            }
            for (int i = 0; i < TableDefine.tGridField.Length; i++)
            {
                string sGridField = TableDefine.tGridField[i].sFieldName;

                if (gvDataE.Columns.Contains(sGridField))
                {
                    gvDataE.Columns[sGridField].HeaderText = TableDefine.tGridField[i].sCaption;
                    gvDataE.Columns[sGridField].DisplayIndex = i; //栏位显示顺序
                    gvDataE.Columns[sGridField].Visible = true;
                }
            }
            gvDataE.Focus();
            //为dgv增加复选框列
            DataGridViewCheckBoxColumn checkbox = new DataGridViewCheckBoxColumn();
            //列显示名称
            checkbox.HeaderText = "选择";
            checkbox.Name = "IsChecked";
            checkbox.TrueValue = true;
            checkbox.FalseValue = false;
            checkbox.DataPropertyName = "IsChecked";
            //列宽
            checkbox.Width = 50;
            //列大小不改变
            checkbox.Resizable = DataGridViewTriState.False;
            //添加的checkbox在dgv第一列
            this.gvDataE.Columns.Insert(0, checkbox);
        }

  //实现搜索
        private void txtSearch_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar != (char)Keys.Return)
                return;
            ShowEVlues();
            editFilter.Focus();
        }
   //实现通过流程取站点
        private void cboRoute_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (cboRoute.Text != "")
            {
                //取站点
                DataTable StationTypeDT = fslConn.GetAllStationType(cboRoute.Text);
                if (StationTypeDT.Rows.Count > 0)
                {
                    for (int i = 0; i < StationTypeDT.Rows.Count; i++)
                    {
                        //cboStationType.Items.Add(item[0]);
                        cboStationType.Items.Add(new Metadata(StationTypeDT.Rows[i][2].ToString(), StationTypeDT.Rows[i][0].ToString(), StationTypeDT.Rows[i][1].ToString()));
                    }
                }
            }
        }
        //点击勾选事件后进行数据绑定
        private void gvDataE_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            string Model = cboModel.Text;
            string Route = cboRoute.Text;
            if (Model == "" || Route == ""|| cboStationType.Text == "")
            {
                MessageBox.Show("机种、流程、站点不能为空,请检查!");
                //DataGridViewCheckBoxCell checkCell = (DataGridViewCheckBoxCell)this.gvDataE.Rows[e.RowIndex].Cells["IsChecked"];
                // this.gvDataE.Rows[e.RowIndex].Cells["IsChecked"].Value = false;
                //将勾选去掉
                this.gvDataE.RefreshEdit();
                return;
            }

            //站点代码
            string StationType = ((Metadata)cboStationType.SelectedItem).ID;
            //站点描述
            string StationTypeDesc = ((Metadata)cboStationType.SelectedItem).NAMEDESC;

            if (e.ColumnIndex == 0 && e.RowIndex != -1)
            {
                //获取控件的值
                DataGridViewCheckBoxCell checkCell = (DataGridViewCheckBoxCell)this.gvDataE.Rows[e.RowIndex].Cells["IsChecked"];
                Boolean flag = Convert.ToBoolean(checkCell.Value);
                //KP品名
                string gvFunName = gvDataE.Rows[e.RowIndex].Cells["MAT_TYPE_CODE"].Value.ToString();
                //KP品名描述
                string gvFunNameDesc = gvDataE.Rows[e.RowIndex].Cells["MAT_TYPE_DESC"].Value.ToString();

                if  (flag == false)
                {
                    checkCell.Value = true;
                    //添加权限
                    fslConn.SaveFslPower(gvFunName, gvFunNameDesc, Model,StationType, StationTypeDesc);
                }
            }
        }

ComboBox取值

main.cs
 //取机种
                    DataTable ModelDT = fslConn.GetAllModel();
                    if (ModelDT.Rows.Count > 0)
                    {
                        foreach (DataRow item in ModelDT.Rows)
                        {
                            cboModel.Items.Add(item[0]);
                        }
                    }
 fslConn.cs
 //取机种
        public DataTable GetAllModel()
        {
            return fslDAL.GetAllModel();
        }
fslDAL.cs
 //取机种
        public DataTable GetAllModel()
        {
            string sql = "SELECT MODEL FROM IMES.M_MODEL";
            return utility.Query(sql);
        }    

储存数据

 fslConn.cs
    public long SaveFslPower(string gvFunName, string gvFunNameDesc, string Model, string StationType, string StationTypeDesc )
        {
            return fslDAL.SaveFslPower(gvFunName, gvFunNameDesc, Model, StationType, StationTypeDesc);
        }
fslDAL.cs
     //存权限
        public long SaveFslPower(string gvFunName, string gvFunNameDesc, string Model, string StationType, string StationTypeDesc)
        {
            string id = GetMaxId();
            string sql = @"INSERT INTO IMES.M_STATIONTYPE_PARTSPEC  (ID,MODEL,STATION_TYPE,STATION_DESC,KP_SPEC,KP_SPEC_DESC,QTY,ENABLED,CREATE_EMPNO,CREATE_TIME,UPDATE_EMPNO)
                        VALUES(:1,:2,:3,:4,:5,:6,:7,:8,:9,:10,:11)";
            object[] para = new object[] { id, Model, StationType , StationTypeDesc,gvFunName, gvFunNameDesc, "1", "Y", utility.GlobalUserNo,DateTime.Now, utility.GlobalUserNo };
            return utility.ExecuteSql(sql, para);
        }        

右键删除数据

实现效果

Main.cs
   //实现DataGridView栏位右键删除数据
        private void 删除ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (gvData.Rows.Count == 0 || gvData.CurrentRow == null)
            {
                return;
            }
            string ID = gvData.CurrentRow.Cells["ID"].Value.ToString();
            if (MessageBox.Show("ID:" + ID + " 确认删除吗?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {
                //M_STATIONTYPE_PARTSPEC_HT写入历史库
                fslConn.SaveFslHistoryData(ID);
                移除权限
                fslConn.DeleteFslByIDAndFunc(ID);

                //显示数据
                ShowVlues();
            }
        }
fslConn.cs
    //删除权限
        public long DeleteFslByIDAndFunc(string id)
        {
            return fslDAL.DeleteFslByIDAndFunc( id);
        }
fslDAL.cs
     //删除权限
        public long DeleteFslByIDAndFunc(string id)
        {
            string sql = @"Delete from  IMES.M_STATIONTYPE_PARTSPEC WHERE ID =:1";
            object[] para = new object[] { id };
            return utility.ExecuteSql(sql, para);
        }     

到此这篇关于C# DataGridView中实现勾选存储数据和右键删除数据的文章就介绍到这了,更多相关C# DataGridView右键删除数据内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • C# DataGridView绑定数据源的方法

    开始以前,先认识一下WinForm控件数据绑定的两种形式,简单数据绑定和复杂数据绑定. 1. 简单的数据绑定 例1 using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["connStr"].ToString())) { SqlDataAdapter sda = new SqlDataAdapter("Select * From T_Class Where F_

  • C# 解决datagridview控件显示大量数据拖拉卡顿问题

    问题描述: 由于在使用SQL查询大量的数据并一次显示到dataGridView控件,出现拖拉的时候卡顿. 解决方法: 1.首先分页. 2.其次把显示控件设置双buffer. 解决过程如下: 1.设置dataGridView双buffer代码如下,需要引用反射命名空间 Type dgvType = this.dataGridView1.GetType(); PropertyInfo pi = dgvType.GetProperty("DoubleBuffered", BindingFla

  • c#利用Excel直接读取数据到DataGridView

    在winform里拖入一个datagridview控件,跟一个openfiledialog控件 复制代码 代码如下: using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using Microsoft.Office.Core;using Excel=Mi

  • C#数据表格(DataGridView)控件的应用案例

    我们通过一个完整的实例来实现课程信息管理功能的操作,包括查询.修改.删除课程信息的操作. 为了简化实例,添加课程信息的操作直接在 SQL Server 数据库中完成. 下面分几个步骤完成. 1) 创建课程信息表创建课程信息表的 SQL 语句如下. use test; create table course ( id int primary key identity(1,1), name varchar(20), credit numeric(3,1), remark varchar(50) );

  • C# DataGridView中实现勾选存储数据和右键删除数据(示例代码)

    DataGridView事件CellContentClick 触发dataGridView的CellContentClick事件,并且在事件中调用Edit 方法. 实现DataGridView中添加CheckBox后不满足条件去掉勾选 并且实现勾选后将绑定数据的存入表的动作 点击确定后去掉勾选 Main.cs private void tabControl1_SelectedIndexChanged(object sender, EventArgs e) { switch (this.tabCo

  • git中submodule子模块的添加、使用和删除的示例代码

    背景 项目中经常使用别人维护的模块,在git中使用子模块的功能能够大大提高开发效率. 使用子模块后,不必负责子模块的维护,只需要在必要的时候同步更新子模块即可. 本文主要讲解子模块相关的基础命令,详细使用请参考man page. 子模块的添加 添加子模块非常简单,命令如下: git submodule add <url> <path> 其中,url为子模块的路径,path为该子模块存储的目录路径. 执行成功后,git status会看到项目中修改了.gitmodules,并增加了一

  • 小程序中实现excel数据的批量导入的示例代码

    目录 1 建立数据源 2 编制入库的代码 2.1 创建低码方法 2.2 低码中调用连接器 3 最终的代码 4 总结 我们上一篇介绍了如何利用微搭的自定义连接器接入腾讯文档的数据,光有接入是不够的,更重要的是我们需要将采集的数据积累下来,变成企业的数字资产. 积累数据最好的方式就是把数据存入数据库,低码工具除了有可视化编程的便利外,还提供了线上的文档型数据库.文档数据库比传统数据库的优势是,文档数据库的返回结构是JSON格式,直接就可以在前端进行渲染.关系型数据库还得通过代码进行转译. 另外一个方

  • JS实现点击复选框变更DIV显示状态的示例代码

    首先是页面上: <div class="row cl"> <label class="form-label col-xs-4 col-sm-3" style="width: 20%"><span class="c-red">*</span>是否存在促销活动:</label> <div class="formControls col-xs-8 col-s

  • js 实现复选框只能选择一项的示例代码

    实例如下所示: <!DOCTYPE HTML> <html> <head> <title></title> </head> <body> <ul> <li><input type="checkbox" name="ss" onclick="choose(this)">1</li> <li><inpu

  • 在Angular中实现一个级联效果的下拉框的示例代码

    实现一个具有级联效果的下拉搜索框,实现的结果如下图所示 我们主要通过这个组件,来学习一些细微的逻辑,比如: 如何计算input框内文字的长度: 如何获取光标的位置:如何实现滚动条随着上下键盘的按动进行移动...... 具体需求如下 级联搜索最多不超过三级,以"."作为级联搜索的连接符 搜索框跟着文本框中的"."进行向后移动,向右移动的最大距离不能超过文本框的宽度 当用户修改之前的级联内容,则不进行搜索,并隐藏搜索框:若用户在之前输入的是".",

  • mybatis中insert主键ID获取和多参数传递的示例代码

    一.插入数据主键ID获取 一般我们在做业务开发时,经常会遇到插入一条数据并使用到插入数据的ID情况.如果先插入在查询的话需要多一次sql查询,未免效率太低.因此mybatis也有提供插入数据并返回主键ID的方式.如下 1.Insert/update 1.1.属性解释 keyProperty selectKey 语句结果应该被设置的目标属性.如果希望得到多个生成的列,也可以是逗号分隔的属性名称列表. resultType 结果的类型.MyBatis 通常可以推算出来,但是为了更加确定写上也不会有什

  • Springboot+AOP实现返回数据提示语国际化的示例代码

    前言 本篇内容: 提示语的国际化返回,自定义多语言. 本文使用aop方式,拦截接口返回的数据,进行转换. 正文 先看这次示例教学的项目 目录结构: (当然resource里面的i18n文件夹和三个properties文件也是要我们自己建的,但是 那个Resource Bundle 不用管,这个在yml加上对应配置项自动生成的. 不清楚的继续往下看教学就好) 开始敲(CV)代码: pom.xml 依赖: <dependencies> <dependency> <groupId&

  • SpringBoot整合腾讯云COS对象存储实现文件上传的示例代码

    目录 1.开通腾讯云对象存储服务 2.创建存储桶 3.密钥管理,新建密钥 4.yml配置密钥.COS信息 5.COSConfig配置类 6.COS文件上传工具类 7.Controller测试上传接口: 8.PostMan接口调用 9.浏览器预览效果 企业级项目开发中都会有文件.图片.视频等文件上传并能够访问的场景,对于初学者Demo可能会直接存储在应用服务器上:对于传统项目可能会单独搭建FastDFS.MinIO等文件服务来实现存储,这种方案可能对于企业成本较小,但缺点也是很多,例如:1.增加技

  • Qt实现数据导出到xls的示例代码

    目录 一.前言 二.功能特点 三.体验地址 四.效果图 五.相关代码 一.前言 导入导出数据到csv由于语法简单,适用场景有限,于是乎还是必须再造一个轮子导出数据到xls,在经历过数十年的项目实战经验中不断调整和优化.尤其记得当初第一个版本v0.01大概在2011年左右完成的,当时是公司项目运行在嵌入式板子上,需要导出警情记录,拷贝到电脑上打印,由于嵌入式根本没有也不可能去安装excel等软件,硬着头皮去研究了xml格式的xls文件,按照那个规则组合成简单的导出数据,这个思路想法理论上比QtXl

随机推荐