У меня есть Treeview с "populateOnDemand" установлен в true. Я хочу, чтобы это древовидное представление сохраняло свое состояние (узлы, развернутые/свернутые) с одной страницы на другую. Viewstate не работает, потому что дерево для разных страниц отличается. Вот мой код на данный момент.сценарий клиентской стороны для событий treeview
ASPX страница:
<asp:TreeView
ID="arbre"
EnableViewState="true"
PopulateNodesFromClient="true"
runat="server" />
код позади:
Protected Sub arbre_TreeNodeCollapsed(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.TreeNodeEventArgs) Handles arbre.TreeNodeCollapsed
CType(Session("listeNoeudsOuverts"), Hashtable)(e.Node.Value) = True
End Sub
Protected Sub arbre_TreeNodeExpanded(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.TreeNodeEventArgs) Handles arbre.TreeNodeExpanded
CType(Session("listeNoeudsOuverts"), Hashtable)(e.Node.Value) = False
End Sub
Protected Sub arbre_TreeNodePopulate(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.TreeNodeEventArgs) Handles arbre.TreeNodePopulate
// code to populate nodes
CType(Session("listeNoeudsOuverts"), Hashtable)(e.Node.Value) = True
End Sub
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Session("listeNoeudsOuverts") Is Nothing Then
Session("listeNoeudsOuverts") = New Hashtable()
End If
// other stuff
End Sub
Это хорошо работает, ЬиЕ Я хотел бы избежать постбэк каждый раз, когда пользователь разворачивает или сворачивает узел. Я знаю, что могу установить EnebleClientScript в true и управлять клиентской частью событий в Javascript, но я больше не буду использовать свою переменную сеанса. Есть ли способ достичь этого?
Спасибо