WinForm-->DataGridView-->CheckedListBox

beckhon 2012-06-19 09:45:20
刚碰WinForm的新手求助:

环境VS2010,WinForm开发

问题:
想实现winform中datagridview中绑定三列,前两列是父对象id和父对象名称,第三列绑定该父对象下的所有子对象,每个父对象单独成一行,用于绑定子对象的第三列想用checkedListBox来做,因为涉及到批量删除。这个东东的WebForm版本实现是:父对象查出来是一个数据集,然后在在RowDataBound事件中 获取父对象的Id通过方法查出其下面所有子对象再绑给子对象对应CheckBoxList控件

求助:
问题1:WinForm中没有找到类似于WebForm中的RowDataBound事件,我查资料之后考虑用RowPrePaint不知道错了没
问题2:DataGridView中添加列好像没有CheckListBox的列,我上网找了一个微软大牛写的CheckedListBoxColumn.cs现在,,,WinForm中好像也木有FindControl这个方法,,,WebForm中是在RowDataBound中用FindControl找到CheckListBox然后绑数据源就可以了,WinForm中应该怎么做啊,,,,,
...全文
170 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
beckhon 2012-06-19
  • 打赏
  • 举报
回复
当时这样考虑是因为 这样更直观,而且在WebForm里实现起来相当的简单 所以就理所当然的想这样实现了用树配合Gird的话,就担心用户体验不够好,因为点了B节点之后,再点A节点,那在B节点所选的子对象就看不到了 记不住了,如果WinForm里DataGridView和CheckedListBox实在不好弄,就只能考虑楼上大大的建议了,哎
熙风 2012-06-19
  • 打赏
  • 举报
回复



//全选
private void btnAllchoose_Click(object sender, EventArgs e)
{
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
dataGridView1.Rows[i].Cells[0].Value = true;
}
}
//反选
private void btnRchose_Click(object sender, EventArgs e)
{
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
DataGridViewCheckBoxCell chk = (DataGridViewCheckBoxCell)dataGridView1.Rows[i].Cells[0];
if ((Boolean)chk.EditedFormattedValue == true)
{
dataGridView1.Rows[i].Cells[0].Value = false;
}
else
dataGridView1.Rows[i].Cells[0].Value = true;
}

}
熙风 2012-06-19
  • 打赏
  • 举报
回复
这个你为什么不用TreeView+DataGridView来实现呢?
点击Treeview,DataGridview来显示子对象,列表用DataGridViewCheckBoxColumn,勾选删除不还简单些么?

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧