将Treeview的checkBox属性设置为true,要实现选中节点后,其子节点也被选中,并且在Datagridview中显示相应的记录也被选中(在记录前的复选框中打钩)
解决方案 »
- 程序通过COM1读取数据,程序因其他原因关闭,再开启程序,提示COM1被占用,怎么解决啊
- xml webservice 数据输出问题
- winforms下载一行记录到excel问题?
- 为什么窗体的Close会引发下拉框的SelectedIndexChanged事件?
- 有没有人知道怎样解决下面的问题啊!
- 在C#中嵌入Java脚本是怎样将脚本中的变量值传递到C#中
- 关于从access中读取到dataset中的问题
- 下面这段程序错在哪里?
- 等!急!
- 《在公司进一步推广DOTNET的提案》文档意见征求 兼散分
- DATASET UPDATE回数据库的时候,对于性别这种转换显示内容的应该怎么处理
- 怎样在服务器端取得window.showModalDialog的参数!
TreeView有一个AfterCheck事件.
用遍历的方式,将其子节点的Checked设置为当前TreeNode的Checked值
在AfterCheck中写:private void treeView1_AfterCheck(object sender, TreeViewEventArgs e)
{
foreach (TreeNode tn in e.Node.Nodes)
{
tn.Checked = e.Node.Checked;
}
}
要改变DataGridView中的记录选中标志,要看你的TreeView与DataGridView通过什么方式关连,即你节点对应DataGridView中的哪个列.
同上面的方法,一样遍历DataGridView中的Rows集合中满足你的条件的Row,将这行Row对应的列的值改为TreeNode的Checked值.
假如你的DataGridView的DataSource数据源为一个DataTable的DefaultView下面代码中,FieldName是你的DataGridView中的与TreeView的节点(假定是与Name属性关联)关联的列的名字,Checked是你的DataGridView中显示是否选中的标识字段(为Bool类型).下列代码同样加在上面的那个方法中. DataView dv = (DataView)dataGridView1.DataSource;
DataTable dt = dv.Table;
foreach(DataRow dr in dt.Rows)
{
if (dr["FieldName"].ToString() == e.Node.Name)
dr["Checked"] = true;
else
dr["Checked"] = false; }
以上代码没测试过,你自己可以测试一下.
DataView dv = (DataView)dataGridView1.DataSource;//取得DataGridView的数据源
DataTable dt = dv.Table;//取得DataView所对应的DataTable
foreach(DataRow dr in dt.Rows) //对DataTable的每一个Row进行循环
{
//看当前Row的与TreeView关联的列的值是否等于当前节点的名字(也可以用节点的Text)
if (dr["FieldName"].ToString() == e.Node.Name)
//这句我不知道对不对.
//如果当前Row的与TreeView关联的列的值等于节点的名字,则改DataTable中的标识列的值.
dr["Checked"] = true;
else
//这一句也不知道不对.你自己试下,就是改一个DataTable中某一行中某一列的值
dr["Checked"] = false; }
与NAME属性关联,NAME对应一个编号范围,即在这个范围内的记录前打钩