The sample code below represents an ASPxTreeView.ExpandedChanging event handler. The event handler prevents collapsing nodes if it has selected children in any generation.
View Example
using DevExpress.Web.ASPxTreeView;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void ASPxTreeView1_ExpandedChanging(object source, DevExpress.Web.ASPxTreeView.TreeViewNodeCancelEventArgs e) {
if ((e.Node.Expanded) && (ASPxTreeView1.SelectedNode != null)) {
TreeViewNode node = ASPxTreeView1.SelectedNode.Parent;
while (node != null) {
if (e.Node == node) {
e.Cancel = true;
break;
}
node = node.Parent;
}
}
}
}
<dx:ASPxTreeView ID="ASPxTreeView1" runat="server" DataSourceID="XmlDataSource1" AutoPostBack="True" AllowSelectNode="True" OnExpandedChanging="ASPxTreeView1_ExpandedChanging">
</dx:ASPxTreeView>
<asp:XmlDataSource ID="XmlDataSource1" runat="server" DataFile="~/App_Data/MenuTabbedMenu.xml"
XPath="/mainmenu/item"></asp:XmlDataSource>
<dx:ASPxTreeView ID="ASPxTreeView1" runat="server" DataSourceID="XmlDataSource1" AutoPostBack="True" AllowSelectNode="True" OnExpandedChanging="ASPxTreeView1_ExpandedChanging">
</dx:ASPxTreeView>
<asp:XmlDataSource ID="XmlDataSource1" runat="server" DataFile="~/App_Data/MenuTabbedMenu.xml"
XPath="/mainmenu/item"></asp:XmlDataSource>
Imports DevExpress.Web.ASPxTreeView
Partial Public Class _Default
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
End Sub
Protected Sub ASPxTreeView1_ExpandedChanging(ByVal source As Object, ByVal e As DevExpress.Web.ASPxTreeView.TreeViewNodeCancelEventArgs)
e.Node.Expanded = True
If e.Node.Expanded AndAlso (ASPxTreeView1.SelectedNode IsNot Nothing) Then
Dim node As TreeViewNode = ASPxTreeView1.SelectedNode.Parent
Do While node IsNot Nothing
If e.Node Is node Then
e.Cancel = True
Exit Do
End If
node = node.Parent
Loop
End If
End Sub
End Class