我在学习如何访问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