datagridview复选框列 [英] datagridview check box column

查看:80
本文介绍了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(< span class =code-keyword> object  sender,EventArgs e)
{
for int k = 0 ; k < = dataGridView1.RowCount - < span class =code-digit> 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是薪水栏
// }
< span class =code-comment> //
}
// //这是一个总显示文本框
// 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复选框列。









参考网址 - http://www.dotnetspider.com/resources/43689-How-create-check-box-column-datagridview.aspx [ ^ ]


  for  int  i =  0 ; i< gridview1.rows.count; i ++)
{
if ((< span class =code-keyword> 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 - http://www.dotnetspider.com/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复选框列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆