DataGridView 添加checkbox

http://www.cnblogs.com/moss_tan_jun/archive/2011/04/06/2007319.html

DataGridViewCheckBoxColumn newColumn = new DataGridViewCheckBoxColumn();
newColumn.HeaderText = "选择";
dataGridView1.Columns.Add(newColumn);

这样添加的列是放在最后一列,也许你希望它在其它列,例如第二列,那么可以:

dataGridView1.Columns.Insert(1, newColumn); 

DataGridView中的DataGridViewCheckBoxColumn是很难控制的,当 DataGridView 未绑定到数据时,对单元格的编辑会在用户移到另一个单元格时被交        

DataGridView.IsCurrentCellDirty 属性

如果当前单元格有未提交的更改,为 true;否则为 false。处理方法

if (dataGridView.IsCurrentCellDirty)       

{

      //将当前单元格中的更改提交到数据缓存,但不结束编辑模式。           

      dataGridView.CommitEdit(DataGridViewDataErrorContexts.Commit);

}

在winfrom 的DataGridView中添加一列,ColumnType属性设置为DataGridViewCheckBoxColumn。

假设设置Name属性为SelIndex

1、选择全部列

       

 private void btnSelALl_Click(object sender, EventArgs e)
        {
            DataTable dt = (dataGridView1.DataSource as DataTable);
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                dt.Rows[i]["SelIndex"] = 1;
            }
        }

2、取得某一选择行的值

private void btnGetRows_Click(object sender, EventArgs e)
        {

            //刷新
            if (dataGridView1.IsCurrentCellDirty)
            {
                dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit);
            }

           //取得选中的行
            for (int i = 0; i < dataGridView1.Rows.Count; i++)
            {
                if (dataGridView1.Rows[i].Cells["SelIndex"].Value.ToString() == "1")
                {
                    //相应的操作

                  MessageBox.Show( dataGridView1.Rows[i].Cells["Test"].Value.ToString());

                }
            }

        }


其他:添加 一行(比如说合计行)

index = dataGridView1.Rows.Add();
DataGridViewRow newrow = dataGridView1.Rows[index];
newrow.Cells[0].Value = ...;
newrow.Cells[1].Value = ...;
newrow.Cells[2].Value = ... 

3

首先datagridview属性--> 编辑列--> DataGridViewCheckBoxColumn中的数据有设falsevalue和truevalue
if (this.checkBox1.Checked)
            {
                for (int i = 0; i < this.dataGridView1.Rows.Count; i++)
                {
                    this.dataGridView1.Rows[i].Cells["Column0"].Value = 1;
                }
            }
            else 
            {
                for (int i = 0; i < this.dataGridView1.Rows.Count; i++) 
                {
                    this.dataGridView1.Rows[i].Cells["Column0"].Value = 0;
                }

            }


// checkbox 勾上

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if ((bool)dataGridView1.Rows[e.RowIndex].Cells[0].EditedFormattedValue == true)
            {
                dataGridView1.Rows[e.RowIndex].Cells[0].Value = false;
            }
            else
            {
                dataGridView1.Rows[e.RowIndex].Cells[0].Value = true;
            }
        }

 我的全选是这样的,是可以的呀

   //循环dataGridView
   for (int i = 0; i < dgvOperation.Rows.Count; i++)
   {
       //设置设置每一行的选择框为选中,第一列为checkbox
       dgvOperation.Rows[i].Cells[0].Value = true;
   }
这个是反选的作用
//循环dataGridView
for (int i = 0; i < dgvOperation.Rows.Count; i++)
{
//判断当前行是否被选中
  if ((bool)dgvOperation.Rows[i].Cells[0].EditedFormattedValue == true)
      //设置每一行的选择框为未选中
     dgvOperation.Rows[i].Cells[0].Value = false;
  else
     //设置每一行的选择框为选中
     dgvOperation.Rows[i].Cells[0].Value = true;
 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值