我正在尝试使用TreeView Control在ASP.NET中的简单导航菜单构建Windows Explorer我放置了一个listView控件,该控件动态显示选定节点的孩子。
Root
-Group01
-subgroup1
-1.1
-1.2
-subgroup2
-1.1
-Group02
在pageload上,我将treenode修复到0,因此listView中插入了group01和group02按钮。
我想知道的是,假设我单击listView中的group01按钮应该显示subgroup1和subgroup1等,而不是rootnode的孩子。
这是.aspx代码
<div>
<asp:TreeView ID="TreeView1" runat="server" OnSelectedNodeChanged="TreeView1_SelectedNodeChanged">
<Nodes>
<asp:TreeNode SelectAction="SelectExpand" Text="root" Value="root">
<asp:TreeNode Expanded="False" SelectAction="SelectExpand" Text="group01" Value="group01">
<asp:TreeNode Text="subgroup1" Value="subgroup1">
<asp:TreeNode Text="1.1" Value="1.1"></asp:TreeNode>
<asp:TreeNode Text="1.2" Value="1.2"></asp:TreeNode>
</asp:TreeNode>
<asp:TreeNode Text="subgroup2" Value="subgroup2">
<asp:TreeNode Text="1.1" Value="1.1"></asp:TreeNode>
</asp:TreeNode>
</asp:TreeNode>
<asp:TreeNode Expanded="False" SelectAction="SelectExpand" Text="group02" Value="group02">
</asp:TreeNode>
</asp:TreeNode>
</Nodes>
</asp:TreeView>
</div>
<div>
<asp:ListView ID="ListView1" runat="server">
</asp:ListView>
</div>
aspx.cs代码
protected void Page_Load(object sender, EventArgs e)
{
TreeView1.Nodes[0].Select();
TreeView1_SelectedNodeChanged(this, EventArgs.Empty);
}
protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
{
ListView1.Controls.Clear();
List<string> childs = new List<string>();
for (int i = 0; i < TreeView1.SelectedNode.ChildNodes.Count; i++)
{
childs.Add(TreeView1.SelectedNode.ChildNodes[i].Text);
}
foreach (string val in childs)
{
Button btn = new Button
{
Text = val
};
ListView1.Controls.Add(btn);
ListView1.Controls.Add(new LiteralControl("</br></br>"));
}
}
由于我是新手
首先,您的.aspx文件不包含ListView1。
第二," subgroup1和subgroup1"可能是语义错误。
我认为您将listView和listViewItem映射到了treenode。您需要单击ListViewItem以控制Treenode展开或崩溃。
或您想单击节点的"文本"以控制而不是" "/" - "符号。
无论如何,您必须找到节点,并扩大了判断。
可能是此代码可以帮助您。
protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
{
TreeView tree = (TreeView)sender;
TreeNode node = tree.SelectedNode;
bool isExpanded = Boolean.Parse(node.Expanded.ToString());
if (isExpanded)
node.Collapse();
else
node.Expand();
tree.SelectedNode.Selected = false;
}