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
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)