我有一个带TreeView和DropDownList的asp.net页面。TreeView在后面的代码中定义:
<asp:TreeView ID="TreeViewResume" runat="server" ImageSet="Simple" NodeIndent="15" OnSelectedNodeChanged="ClickTreeViewResume">
<HoverNodeStyle Font-Underline="True" ForeColor="#6666AA" />
<NodeStyle Font-Names="Tahoma" Font-Size="12pt" ForeColor="#203239" HorizontalPadding="0px"
NodeSpacing="0px" VerticalPadding="4px"></NodeStyle>
<ParentNodeStyle Font-Bold="False" />
<SelectedNodeStyle BackColor="#B5B5B5" Font-Underline="False" HorizontalPadding="2px"
VerticalPadding="0px" />
</asp:TreeView>
还有DropDownList:
<asp:Panel ID="PanelDdl" runat="server">Sélection de la période : <asp:DropDownList ID="Ddl" runat="server" OnSelectedIndexChanged="Ddl_SelectedIndexChanged" AutoPostBack="true">
我通过Page_Load()中的代码加载TreeView:
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
RemplirTableau();
}
}
我想在DropDownList的SelectedIndexChange()上更改TreeView的SQL源,并重画Treeview。
protected void Ddl_SelectedIndexChanged(object sender, EventArgs e)
{
TreeViewResume.Nodes.Clear();
RemplirTableau();
}
相反,仅打印TreeView的第一级节点(父节点)。
请帮助吗?
调用TreeView.Nodes将仅访问TreeView的直接子节点。为了访问较低的子级,可以使用某种类型的递归。
类似:
void ClearTreeView(TreeNode parentNode){
foreach(TreeNode childNode in parentNode.Nodes){
if(childNode.Nodes.Count > 0){
ClearTreeView(childNode);
}
else{
childNode.Nodes.Clear();
}
}
}
This Thread可能对您有所帮助,因为它显示了如何访问所有子节点,孙子节点等。>>
我只需要添加一个TreeViewResume.DataBind();在重新创建TreeView之后: