根据从树网格视图中选择的子节点,在数据网格视图中显示特定行
本文关键字:视图 网格 数据网 数据 显示 树网 选择 子节点 | 更新日期: 2023-09-27 18:21:00
我有这样的层次结构。
+GroupID
------StringID
------StringID
------StringID
+GroupID
------StringID
现在我知道了如何在单击GroupID时显示datagridview
中的特定行。但我不知道如何在单击StringID时获得树中当前选定节点的值,并根据GroupID和StringID*将其显示在datagridview
上。
以下是选择并显示在datagridview
:上的GroupID的代码
private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
int outva;
dataGridView1.ClearSelection();
if (int.TryParse((e.Node.Text), out outva))
{
save=Convert.ToInt16(e.Node.Text);
int row = dataGridView1.Rows.Count;
((DataTable)dataGridView1.DataSource).DefaultView.RowFilter = "Groupid =" +save;
}
else {
// dataGridView1.Rows[i].Visible = false ;
// dataGridView1.Columns.Clear();
}
}
第一个提示:
- 你施法2次,1次就足够了(outva持有你的id,所以不需要转换)
-
节点鼠标点击是为节点/子节点触发的,您必须以某种方式确定点击的类型(组id或字符串id)。例如,检查节点是否有父节点,如果有,则为字符串id,或者如果节点有子节点,则为组id
private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) { int outva; dataGridView1.ClearSelection(); if (int.TryParse((e.Node.Text), out outva)) { //save=Convert.ToInt16(e.Node.Text); //not needed string filterBy; if (e.Node.Parent != null) { filterBy = "GroupId = " + outva; } else { filterBy = "StringId = " outva; } //int row = dataGridView1.Rows.Count; // not needed ((DataTable)dataGridView1.DataSource).DefaultView.RowFilter = filterBy; } else { } }
当然,根据您创建树的方式,可能需要一些改进。