我在學習如何訪問ASP.Net母版頁的控件並嘗試展開特定的TreeView節點。我正在從另一個不是母版頁的頁面執行此操作。從代碼隱藏中展開ASP.Net TreeView節點
objContentPlaceHolder,objLoginView和objTreeView都具有通過使用調試器確認的值。
你可以看看這段代碼,讓我們知道爲什麼for循環中的代碼沒有執行嗎?它到達for循環,但只是在該點跳過for循環。
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim objContentPlaceHolder As ContentPlaceHolder
Dim objLoginView As LoginView
Dim objTreeView As TreeView
objContentPlaceHolder = CType(Master.FindControl("ContentPlaceHolderBody"), ContentPlaceHolder)
If Not objContentPlaceHolder Is Nothing Then
objLoginView = CType(objContentPlaceHolder.FindControl("loginViewMain"), LoginView)
If Not objLoginView Is Nothing Then
objTreeView = CType(objLoginView.FindControl("TreeViewMain"), TreeView)
' Make sure all nodes for Maintenance are expanded.
'--------------------------------------------------
For Each treenode As TreeNode In objTreeView.Nodes
If treenode.Text = "Maintenance" Then
treenode.Expand()
End If
Next treenode
End If
End If
End Sub
*更新*
我改變了頁面加載事件處理程序,以一個PreRenderComplete事件處理程序,你會相信它的工作?不知道爲什麼PreRender沒有,但那是它。再次感謝所有人的幫助。
感謝您的代碼示例。我會嘗試一下,讓你知道它是如何工作的。 – 2013-02-12 16:41:48
我發現「expandTreeNode(treenode)」不會執行,因爲它在跳過的for循環中。 – 2013-02-12 16:48:45
@ Emad-ud-deen我猜你的treeview沒有綁定在那個時候,你應該移動這個代碼在pre_render事件處理程序 – jbl 2013-02-12 16:50:32