如何在datagridview 的head上绘制一个全选按钮

如何在datagridview 的head上绘制一个全选按钮,第1张

// 变量

DataTable dtable =new DataTable()//中间接收表

DataRow row//定义行

变量dt 为DatagridView1的数据

事件代码

Button_Click事件中代码

dtable = dt.Clone()//先让中间表数据列DatagridView1的表的数据列相同

foreach (DataGridViewRow Row in dataGridView1.Rows) //DataGridView全部行

{

//判断是否选中

if (Row.Cells["Checked"].Value!= null &&(bool)Row.Cells["Checked"].Value!= false)

{

// ["Checked"]为勾选列的列名

DataRowView drv = Row.DataBoundItem as DataRowView//获取行中所有数据

row = (DataRow)drv.Row//将dgv行中数据添加到定义行中

dtable.Rows.Add(row.ItemArray)//添加就可以了。

}

else

{

continue//继续找

}

}

dataGridView2.DataSource = dtable//最后绑定就行了

看看是不是你想要的。如果是就给分,不是的话 咱们还可以再加鈡嘛。

最近遇到datagridview里的checkbox实现全选问题,我在网上查了好多资料,一致认为用循环来实现全选,可是那速度真的是太慢了。

后来发现了一个比较快的方法:

现在我们要实现一个CheckBox和DataGridView中所有的CheckBox的状态同步。DataGridView的名字为dgvRefObject,DataGridView的第一列(Column)为DataGridViewCheckBoxColumn;实现全选的CheckBox的名称为SelectAll。那么实现这个功能的代码如下:

dgvRefObject.DataSource

=

DataSet.Talbe[0]//重新初始化DataGridView

dgvRefObject.Columns[0].DefaultCellStyle.NullValue

=

SelectAll.Checked

要实现以前功能还要注意一些细节:

1.向DataGridView中DataSource传数据集的时,请不要给第一列传值,即CheckBox列。

全选或取消时判断一下是否选中:

for (int i = 0i <this.dataGridView1.Rows.Counti++)

{

if ((bool)dataGridView1.Rows[i].Cells["mark"].EditedFormattedValue==true)

{

this.dataGridView1.Rows[i].Cells["mark"].Value = false

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11403140.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存