vs中如何把DataGridViewCheckBoxColumn选中行的数据放到另一DataGridView中
如图,怎么把选中的行的信息放到下面那个DataGridView2中(给用户进行确认处理的),有没有不经过数据库就能直接把DataGridViewCheckBoxColum...
如图,怎么把选中的行的信息放到下面那个DataGridView2中(给用户进行确认处理的),有没有不经过数据库就能直接把DataGridViewCheckBoxColumn的集合直接填充到DataGridView2的?如果不能直接填充到DataGridView2的话,是不是取选中行的“编号”值,经过数据库查询,填充到DataGridView2中。获取“编号“值的代码怎么写?
我那段代码是这样的:
for (int i = 0; i < dataGridView1.RowCount; i++)
{
string selectValue = dataGridView1.Rows[i].Cells["Column1"].EditedFormattedValue.ToString();
if (selectValue == "True")
{
try
{
this.dataGridView1.BindingContext[this.dataGridView1.DataSource].SuspendBinding();
dataGridView1.Rows[i].Visible = false; //隐藏选中的行
//把选中的数据填充到 DataGridView2中
}
catch (Exception)
{
continue;
}
}
}
我对这个不是很懂,请高手指教。急用!分数不多,请大家谅解哈! 展开
我那段代码是这样的:
for (int i = 0; i < dataGridView1.RowCount; i++)
{
string selectValue = dataGridView1.Rows[i].Cells["Column1"].EditedFormattedValue.ToString();
if (selectValue == "True")
{
try
{
this.dataGridView1.BindingContext[this.dataGridView1.DataSource].SuspendBinding();
dataGridView1.Rows[i].Visible = false; //隐藏选中的行
//把选中的数据填充到 DataGridView2中
}
catch (Exception)
{
continue;
}
}
}
我对这个不是很懂,请高手指教。急用!分数不多,请大家谅解哈! 展开
展开全部
首先在rows.count循环前要给dataGridView2加colums
dataGridView2.Columns.Add("nihao1","你好");
dataGridView2.Columns.Add("nihao2","你好");
dataGridView2.Columns.Add("nihao3","你好");
dataGridView2.Columns.Add("nihao4","你好"); ......
类似这样,和后面要传的列要保持一致
然后在你注释的 //把选中的数据填充到 DataGridView2中
下面这样操作就行了,不用重新绑定
DataGridViewCheckBoxCell check = dataGridView1.Rows[i].Cells[0] as DataGridViewCheckBoxCell;//你的checkbox所在的列
if (check.Value != null) //当第一次没操作checkbox时,它的值为空,等操作一次后才会显示true或者false
{
if ((bool)check.Value)//当选中时,下面的操作方法就多了,我随便列举一种了
{
object[] item = new object[]//想显示几列就写几列,注意与前面的对应
{
dataGridView1.Rows[i].Cells[1].Value.ToString(),
dataGridView1.Rows[i].Cells[2].Value.ToString(),
dataGridView1.Rows[i].Cells[3].Value.ToString(),
dataGridView1.Rows[i].Cells[4].Value.ToString(),
};
dataGridView2.Rows.Add(item);
}
}
dataGridView2.Columns.Add("nihao1","你好");
dataGridView2.Columns.Add("nihao2","你好");
dataGridView2.Columns.Add("nihao3","你好");
dataGridView2.Columns.Add("nihao4","你好"); ......
类似这样,和后面要传的列要保持一致
然后在你注释的 //把选中的数据填充到 DataGridView2中
下面这样操作就行了,不用重新绑定
DataGridViewCheckBoxCell check = dataGridView1.Rows[i].Cells[0] as DataGridViewCheckBoxCell;//你的checkbox所在的列
if (check.Value != null) //当第一次没操作checkbox时,它的值为空,等操作一次后才会显示true或者false
{
if ((bool)check.Value)//当选中时,下面的操作方法就多了,我随便列举一种了
{
object[] item = new object[]//想显示几列就写几列,注意与前面的对应
{
dataGridView1.Rows[i].Cells[1].Value.ToString(),
dataGridView1.Rows[i].Cells[2].Value.ToString(),
dataGridView1.Rows[i].Cells[3].Value.ToString(),
dataGridView1.Rows[i].Cells[4].Value.ToString(),
};
dataGridView2.Rows.Add(item);
}
}
追问
还有一个小问题,就是当你选择一批后,再次勾选的时候只要焦点还在勾选的那行上,那行怎么也选不上的?
追答
我在这边测试,我自己写的例子没有你说的问题,把你的代码拷过来好像也没有。。完全没问题啊,是不是你其他位置有操作焦点什么的了,打个断点一步步看看。
展开全部
DataGridViewRowCollection drc = dataGridView1.Rows;
DataGridViewRow dgvr=null;
for (int i = 0; i < drc.Count; i++)
{
if (drc[i].Selected) { dgvr = drc[i]; break; }//找到选中行
}
dataGridView2.Rows.Add(dgvr);//添加进表2
DataGridViewRow dgvr=null;
for (int i = 0; i < drc.Count; i++)
{
if (drc[i].Selected) { dgvr = drc[i]; break; }//找到选中行
}
dataGridView2.Rows.Add(dgvr);//添加进表2
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询