datagridview复选框列

编程入门 行业动态 更新时间:2024-10-28 05:14:16
本文介绍了datagridview复选框列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我正在创建一个项目,根据需要为组织开发项目。 我为一些项目分配了一些员工。当项目完成后,员工就可以自由了。 用于分配我使用datagridview复选框列。 当我点击表格中的保存按钮时,检查的行插入数据库...

解决方案

在本文中,我将解释如何在C#.NET windows应用程序的datagridview控件中显示复选框列。使用这个简单的代码在项目中创建复选框列。 描述 例如我们显示大datagridview控件中的数据数量,有时我们需要从数据库中删除更多的记录或者只处理datagridview中的一些记录。在那种情况下,我们使用复选框列。 根据复选框列选择执行删除或任何其他过程。在这段代码中我详细解释了这个过程。 1)为复选框类创建实例

CheckBox chkbox = new CheckBox(); 程序p = new Program(); DataTable dt = new DataTable();

2 )在datagridview控件中加载一些静态数据

private void Form1_Load( object sender,EventArgs e) { loadGrid(); } void loadGrid() { dataGridView1.AllowUserToAddRows = 假; // 我在数据网格视图中创建复选框列 dataGridView1.Columns.Clear(); DataGridViewCheckBoxColumn colCB = new DataGridViewCheckBoxColumn(); // 复选框列的设置名称 colCB .Name = chkcol; colCB.HeaderText = ; // 如果使用标题复选框,则使用它 colCB.HeaderCell .Style.Alignment = DataGridViewContentAlignment.MiddleCenter; dataGridView1.Columns.Add(colCB); // 选择要显示复选框的单元格 Rectangle rect = this .dataGridView1.GetCellDisplayRectangle( 0 , - 1,真); // 0列索引-1(标题行)是行索引 // 提及复选框的大小 chkbox.Size = 新大小( 18 , 18 ); // 设置标题复选框位置 rect.Offset( 40 , 2 ); chkbox.Location = rect.Location; chkbox.CheckedChanged + = chkBoxChange; // 将CheckBox控件添加到datagridView 此 .dataGridView1.Controls.Add(chkbox); DataRow dr = default (DataRow); // 声明列名 dt.Columns.Add ( eno); dt.Columns.Add( empname); dt.Columns.Add( sal); // 创建包含数据的行 dr = dt。 NEWROW(); dr [ eno] = 101 ; dr [ empname] = test1; dr [ sal] = 9000 ; dt.Rows.Add(dr); dr = dt.NewRow(); dr [ eno] = 102 ; dr [ empname] = test2; dr [ sal] = 15000 ; dt.Rows.Add(dr); dr = dt.NewRow(); dr [ eno] = 103 ; dr [ empname] = test3; dr [ sal] = 20000 ; dt.Rows.Add(dr); // 将数据表数据绑定到datagridview dataGridView1 .DataSource = dt; }

3)如果用户选择标题复选框以选中该数据网格视图中的所有复选框,则添加事件处理程序代码代码

private void chkBoxChange( object sender,EventArgs e) { for ( int k = 0 ; k < = dataGridView1.RowCount - 1 ; k ++) { this .dataGridView1 [ 0 ,k] .Value = 此 .chkbox.Checked; } 此 .dataGridView1.EndEdit(); }

4)在文本框中显示选中的复选框行记录

private void button1_Click( object sender,EventArgs e) { int i = 0 ; List ChkedRow = new List(); for (i = 0 ; i < = dataGridView1.RowCount - 1 ; i ++) { if (Convert.ToBoolean(dataGridView1.Rows [i] .Cells [ chkcol]。值)== true ) { ChkedRow.Add(i); } } 如果(ChkedRow.Count == 0 ) { MessageBox.Show( 选择至少一个复选框); return ; } foreach ( int k in ChkedRow) { textBox1.Text = dataGridView1.Rows [k] .Cells [ 1 ] .Value.ToString(); textBox2.Text = dataGridView1.Rows [k] .Cells [ 2 ]。Value.ToString(); textBox3.Text = dataGridView1.Rows [k] .Cells [ 3 ]。Value.ToString(); } }

5)如果您希望用户只选择该datagridview中的一个复选框,请使用此代码来阻止多个复选框的选择

private void dataGridView1_CellClick(System。 Object sender,System.Windows.Forms.DataGridViewCellEventArgs e) { if (e。 ColumnIndex == 0 ) { if (Convert.ToBoolean(dataGridView1。行[e.RowIndex] .Cells [ chkcol]。值)== false ) { for ( int i = 0 ; i < = dataGridView1.Rows.Count - 1 ; i ++) { dataGridView1.Rows [i] .Cells [ chkcol]。Value = false ; } } } }

6)如果你想根据选择增加工资总额使用这个代码

private void dataGridView1_CellContentClick(System 。 Object sender,System.Windows.Forms.DataGridViewCellEventArgs e) { double k = 0 。 0 ; if (e.ColumnIndex == 0 ) { dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit); for ( int i = 0 ; i < = dataGridView1.RowCount - 1 ; i ++) { // chkcol是复选框列 if (Convert.ToBoolean(dataGridView1.Rows [i] .Cells [ chkcol ] .Value)== true ) {k = k + Convert.ToDouble(dataGridView1.Rows [i] .Cells [ 3 ]值)。 // 3是工资栏 } } // 这一个是总显示文本框 textBox3.Text = k.ToString(); } }

7)从datagridview中删除所选记录使用下面的代码

private void button2_Click( object sender,EventArgs e) { List ChkedRow = new List(); DataRow博士; for ( int i = 0 ; i < = dataGridView1.RowCount - 1 ; i ++) { if (Convert.ToBoolean(dataGridView1.Rows [i] .Cells [ chkcol]。值)== true ) { ChkedRow.Add (一世); } } foreach ( int k in ChkedRow) { dr = dt.Rows [k]; dt.Rows [k] .Delete(); // dt.Rows.Remove(dr); } }

完整源代码 设计方 在表单设计中放置一个datagridview控件。 代码落后

使用 System.Text; 使用 System.Windows.Forms; 命名空间 CShChkColumn { public partial class Form1:Form { CheckBox chkbox = 新 CheckBox(); 程序p = new Program(); DataTable dt = new DataTable(); public Form1() { InitializeComponent(); } private void Form1_Load( object sender,EventArgs e) { loadGrid(); } void loadGrid() { dataGridView1.AllowUserToAddRows = 假; // 我在数据网格视图中创建复选框列 dataGridView1.Columns.Clear(); DataGridViewCheckBoxColumn colCB = new DataGridViewCheckBoxColumn(); // 复选框列的设置名称 colCB .Name = chkcol; colCB.HeaderText = ; // 如果使用标题复选框,则使用它 colCB.HeaderCell .Style.Alignment = DataGridViewContentAlignment.MiddleCenter; dataGridView1.Columns.Add(colCB); // 选择要显示复选框的单元格 Rectangle rect = this .dataGridView1.GetCellDisplayRectangle( 0 , - 1,真); // 0列索引-1(标题行)是行索引 // 提及复选框的大小 chkbox.Size = 新大小( 18 , 18 ); // 设置标题复选框位置 rect.Offset( 40 , 2 ); chkbox.Location = rect.Location; chkbox.CheckedChanged + = chkBoxChange; // 将CheckBox控件添加到datagridView 此 .dataGridView1.Controls.Add(chkbox); DataRow dr = default (DataRow); // 声明列名 dt.Columns.Add ( eno); dt.Columns.Add( empname); dt.Columns.Add( sal); // 创建包含数据的行 dr = dt。 NEWROW(); dr [ eno] = 101 ; dr [ empname] = test1; dr [ sal] = 9000 ; dt.Rows.Add(dr); dr = dt.NewRow(); dr [ eno] = 102 ; dr [ empname] = test2; dr [ sal] = 15000 ; dt.Rows.Add(dr); dr = dt.NewRow(); dr [ eno] = 103 ; dr [ empname] = test3; dr [ sal] = 20000 ; dt.Rows.Add(dr); // 将数据表数据绑定到datagridview dataGridView1 .DataSource = dt; } private void chkBoxChange( object sender,EventArgs e) { for ( int k = 0 ; k < = dataGridView1.RowCount - 1 ; k ++) { this .dataGridView1 [ 0 ,k] .Value = 此 .chkbox.Checked; } 此 .dataGridView1.EndEdit(); } private void button1_Click( object sender,EventArgs e) { int i = 0 ; List ChkedRow = new List(); for (i = 0 ; i < = dataGridView1.RowCount - 1 ; i ++){ if (Convert.ToBoolean(dataGridView1.Rows [i] .Cells [ chkcol]。 )== true ){ ChkedRow.Add(i); } } 如果(ChkedRow.Count == 0 ){ MessageBox.Show( 选择至少一个复选框); return ; } foreach ( int k in ChkedRow){ textBox1.Text = dataGridView1.Rows [k] .Cells [ 1 ]。Value.ToString (); textBox2.Text = dataGridView1.Rows [k] .Cells [ 2 ]。Value.ToString(); textBox3.Text = dataGridView1.Rows [k] .Cells [ 3 ]。Value.ToString(); } } // 以下方法仅供参考如果您希望用户只选择一个复选框,则网格视图中的一个复选框取消注释 private void dataGridView1_CellClick(System。 Object sender,System.Windows.Forms.DataGridViewCellEventArgs e) { // if(e.ColumnIndex == 0) // { // if(Convert.ToBoolean (dataGridView1.Rows [e.RowIndex] .Cells [chkcol]。Value)== false) // { // for(i nt i = 0; i< = dataGridView1.Rows.Count - 1; i ++) // { // dataGridView1.Rows [i] .Cells [chkcol]。Value = false; // } // } // } } // 如果要在用户选择时添加总计复选框,请在代码下方注释 private void dataGridView1_CellContentClick(System。对象发​​件人,System.Windows.Forms.DataGridViewCellEventArgs e) { // double k = 0.0; // if(e.ColumnIndex == 0 ) // { // dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit); // for(int i = 0; i< = dataGridView1.RowCount - 1; i ++) // { // // chkcol是复选框列 // if(Convert.ToBoolean(dataGridView1.Rows [i] .Cells [chkcol]。Value)== true) // { // k = k + Convert.ToDouble(dataGridView1.Rows [i] .Cells [3] .Value); // 3是薪水栏 // } // } // //这是一个总显示文本框 // textBox3.Text = k.ToString(); // } } // 从中删除所选的复选框记录网格视图 私有 void button2_Click( object sender,EventArgs e) { List ChkedRow = new List(); DataRow博士; for ( int i = 0 ; i < = dataGridView1.RowCount - 1 ; i ++) { if (Convert.ToBoolean(dataGridView1.Rows [i] .Cells [ chkcol]。值)== true ) { ChkedRow.Add (一世); } } foreach ( int k in ChkedRow) { dr = dt.Rows [k]; dt.Rows [k] .Delete(); // dt.Rows.Remove(dr); } } } }

输出 输出显示如下这个 源代码详细信息: 我在这里附加了源代码下载并尝试使用复选框列在datagridview 前端:表格设计 代码背后:C# 结论: 我希望本文可以帮助您了解datagridview复选框列。 参考网址 - www.dotnetspider/resources/43689-How-create-check-box-column-datagridview.aspx [ ^ ]

for ( int i = 0 ; i< gridview1.rows.count; i ++) { if (( bool )gridview1.Rows [i] .Cells [ 表列名称]。值== true ) { // 编写插入命令,即 str = insert into DemoTable( EmpName ) values( + convert.ToString(gridview1.Rows [i] .Cells [ Table_column_Name]。值)+ ); con.Open(); SqlCommand cmd = new SqlCommand(str,con); cmd.ExecuteNonQuery(); con.Close(); } }

//让我知道它是否对您有所帮助。如果有帮助则不要忘记回答

I am creating a project which developed projects for organizations as per there needs. I assigned some of the employees for some project. And when the projects gets complete the employees are free. For assigning i make use of datagridview check box column. when i clicks on save button in the form, the checked row inserted into database...

解决方案

In this article I am going to explain about how to show checkbox column in the datagridview control in C#.NET windows application. Using this simple code to create check box column in your project. Description For example we are displayed large number of data in the datagridview control, sometimes we need to delete more number of records from the database or processed only some records in the datagridview. In that situation we are used checkbox column. Based on the checkbox column selection perform delete or any other process. In this code snippet I am explained in detail about that process. 1) Create instance for checkbox class

CheckBox chkbox=new CheckBox(); Program p=new Program(); DataTable dt = new DataTable();

2) Load some static data in the datagridview control

private void Form1_Load(object sender, EventArgs e) { loadGrid(); } void loadGrid() { dataGridView1.AllowUserToAddRows = false; //Below i create on check box column in the datagrid view dataGridView1.Columns.Clear(); DataGridViewCheckBoxColumn colCB = new DataGridViewCheckBoxColumn(); //set name for the check box column colCB.Name = "chkcol"; colCB.HeaderText = ""; //If you use header check box then use it colCB.HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter; dataGridView1.Columns.Add(colCB); //Select cell where checkbox to be display Rectangle rect = this.dataGridView1.GetCellDisplayRectangle(0, -1, true); //0 Column index -1(header row) is row index //Mention size of the checkbox chkbox.Size = new Size(18, 18); //set position of header checkbox where to places rect.Offset(40, 2); chkbox.Location = rect.Location; chkbox.CheckedChanged += chkBoxChange; //Add CheckBox control to datagridView this.dataGridView1.Controls.Add(chkbox); DataRow dr = default(DataRow); //Declare Column names dt.Columns.Add("eno"); dt.Columns.Add("empname"); dt.Columns.Add("sal"); //Create rows with data dr = dt.NewRow(); dr["eno"] = 101; dr["empname"] = "test1"; dr["sal"] = 9000; dt.Rows.Add(dr); dr = dt.NewRow(); dr["eno"] = 102; dr["empname"] = "test2"; dr["sal"] = 15000; dt.Rows.Add(dr); dr = dt.NewRow(); dr["eno"] = 103; dr["empname"] = "test3"; dr["sal"] = 20000; dt.Rows.Add(dr); //Bind that datatable data into the datagridview dataGridView1.DataSource = dt; }

3) Add Event Handler code if user select Header checkbox to select all check box in that datagrid view using below code

private void chkBoxChange(object sender, EventArgs e) { for (int k = 0; k <= dataGridView1.RowCount - 1; k++) { this.dataGridView1[0, k].Value = this.chkbox.Checked; } this.dataGridView1.EndEdit(); }

4) Display selected checkbox row records in text box

private void button1_Click(object sender, EventArgs e) { int i = 0; List ChkedRow = new List(); for (i = 0; i <= dataGridView1.RowCount - 1; i++) { if (Convert.ToBoolean(dataGridView1.Rows[i].Cells["chkcol"].Value) == true) { ChkedRow.Add(i); } } if (ChkedRow.Count == 0) { MessageBox.Show("Select atleast one checkbox"); return; } foreach (int k in ChkedRow) { textBox1.Text = dataGridView1.Rows[k].Cells[1].Value.ToString(); textBox2.Text = dataGridView1.Rows[k].Cells[2].Value.ToString(); textBox3.Text = dataGridView1.Rows[k].Cells[3].Value.ToString(); } }

5) If you want user select only one checkbox in that datagridview use this code to block multiple selection of checkbox

private void dataGridView1_CellClick(System.Object sender, System.Windows.Forms.DataGridViewCellEventArgs e) { if (e.ColumnIndex == 0) { if (Convert.ToBoolean(dataGridView1.Rows[e.RowIndex].Cells["chkcol"].Value) == false) { for (int i = 0; i <= dataGridView1.Rows.Count - 1; i++) { dataGridView1.Rows[i].Cells["chkcol"].Value = false; } } } }

6) If you want added sum of salary based on the selection use this code

private void dataGridView1_CellContentClick(System.Object sender, System.Windows.Forms.DataGridViewCellEventArgs e) { double k = 0.0; if (e.ColumnIndex == 0) { dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit); for (int i = 0; i <= dataGridView1.RowCount - 1; i++) { //chkcol is checkbox column if (Convert.ToBoolean(dataGridView1.Rows[i].Cells["chkcol"].Value) == true) { k = k + Convert.ToDouble(dataGridView1.Rows[i].Cells[3].Value); //3 is salary column } } //This one is total display textbox textBox3.Text = k.ToString(); } }

7) Delete selected records from the datagridview use below code

private void button2_Click(object sender, EventArgs e) { List ChkedRow = new List(); DataRow dr; for (int i = 0; i <= dataGridView1.RowCount - 1; i++) { if (Convert.ToBoolean(dataGridView1.Rows[i].Cells["chkcol"].Value) == true) { ChkedRow.Add(i); } } foreach (int k in ChkedRow) { dr = dt.Rows[k]; dt.Rows[k].Delete(); //dt.Rows.Remove(dr); } }

Full source Code Design Side Placed one datagridview control in the form design. Code behind

using System.Text; using System.Windows.Forms; namespace CShChkColumn { public partial class Form1 : Form { CheckBox chkbox=new CheckBox(); Program p=new Program(); DataTable dt = new DataTable(); public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { loadGrid(); } void loadGrid() { dataGridView1.AllowUserToAddRows = false; //Below i create on check box column in the datagrid view dataGridView1.Columns.Clear(); DataGridViewCheckBoxColumn colCB = new DataGridViewCheckBoxColumn(); //set name for the check box column colCB.Name = "chkcol"; colCB.HeaderText = ""; //If you use header check box then use it colCB.HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter; dataGridView1.Columns.Add(colCB); //Select cell where checkbox to be display Rectangle rect = this.dataGridView1.GetCellDisplayRectangle(0, -1, true); //0 Column index -1(header row) is row index //Mention size of the checkbox chkbox.Size = new Size(18, 18); //set position of header checkbox where to places rect.Offset(40, 2); chkbox.Location = rect.Location; chkbox.CheckedChanged += chkBoxChange; //Add CheckBox control to datagridView this.dataGridView1.Controls.Add(chkbox); DataRow dr = default(DataRow); //Declare Column names dt.Columns.Add("eno"); dt.Columns.Add("empname"); dt.Columns.Add("sal"); //Create rows with data dr = dt.NewRow(); dr["eno"] = 101; dr["empname"] = "test1"; dr["sal"] = 9000; dt.Rows.Add(dr); dr = dt.NewRow(); dr["eno"] = 102; dr["empname"] = "test2"; dr["sal"] = 15000; dt.Rows.Add(dr); dr = dt.NewRow(); dr["eno"] = 103; dr["empname"] = "test3"; dr["sal"] = 20000; dt.Rows.Add(dr); //Bind that datatable data into the datagridview dataGridView1.DataSource = dt; } private void chkBoxChange(object sender, EventArgs e) { for (int k = 0; k <= dataGridView1.RowCount - 1; k++) { this.dataGridView1[0, k].Value = this.chkbox.Checked; } this.dataGridView1.EndEdit(); } private void button1_Click(object sender, EventArgs e) { int i = 0; List ChkedRow = new List(); for (i = 0; i <= dataGridView1.RowCount - 1; i++) { if (Convert.ToBoolean(dataGridView1.Rows[i].Cells["chkcol"].Value) == true) { ChkedRow.Add(i); } } if (ChkedRow.Count == 0) { MessageBox.Show("Select atleast one checkbox"); return; } foreach (int k in ChkedRow) { textBox1.Text = dataGridView1.Rows[k].Cells[1].Value.ToString(); textBox2.Text = dataGridView1.Rows[k].Cells[2].Value.ToString(); textBox3.Text = dataGridView1.Rows[k].Cells[3].Value.ToString(); } } //Below method is used check only one checkbox in grid view uncomment if you want user select only one checkbox private void dataGridView1_CellClick(System.Object sender, System.Windows.Forms.DataGridViewCellEventArgs e) { //if (e.ColumnIndex == 0) //{ // if (Convert.ToBoolean(dataGridView1.Rows[e.RowIndex].Cells["chkcol"].Value) == false) // { // for (int i = 0; i <= dataGridView1.Rows.Count - 1; i++) // { // dataGridView1.Rows[i].Cells["chkcol"].Value = false; // } // } //} } //Un comment below code if you want add total if user select checkbox private void dataGridView1_CellContentClick(System.Object sender, System.Windows.Forms.DataGridViewCellEventArgs e) { //double k = 0.0; //if (e.ColumnIndex == 0) //{ // dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit); // for (int i = 0; i <= dataGridView1.RowCount - 1; i++) // { // //chkcol is checkbox column // if (Convert.ToBoolean(dataGridView1.Rows[i].Cells["chkcol"].Value) == true) // { // k = k + Convert.ToDouble(dataGridView1.Rows[i].Cells[3].Value); //3 is salary column // } // } // //This one is total display textbox // textBox3.Text = k.ToString(); //} } //Delete selected check box record from grid view private void button2_Click(object sender, EventArgs e) { List ChkedRow = new List(); DataRow dr; for (int i = 0; i <= dataGridView1.RowCount - 1; i++) { if (Convert.ToBoolean(dataGridView1.Rows[i].Cells["chkcol"].Value) == true) { ChkedRow.Add(i); } } foreach (int k in ChkedRow) { dr = dt.Rows[k]; dt.Rows[k].Delete(); //dt.Rows.Remove(dr); } } } }

Output The output is shows like this Source Code Detail: I have attached source here download it and try to use checkbox column in datagridview Front End : Form design Code Behind: C# Conclusion: I hope this article help you to know about datagridview checkbox column. reference url - www.dotnetspider/resources/43689-How-create-check-box-column-datagridview.aspx[^]

for(int i=0;i<gridview1.rows.count;i++) { if((bool)gridview1.Rows[i].Cells["Table column Name"].Value==true) { //write the insert command i.e str="insert into DemoTable("EmpName") values("+convert.ToString(gridview1.Rows[i].Cells["Table_column_Name"].Value)+") "; con.Open(); SqlCommand cmd = new SqlCommand(str, con); cmd.ExecuteNonQuery(); con.Close(); } }

//let me know if it helps you or not.If it helps then don't forgot to like the answer

更多推荐

datagridview复选框列

本文发布于:2023-11-07 08:58:34,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1566038.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:复选框   datagridview

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!