' 风手琴菜单:
Private Function InitAccordionMenu() As Accordion
Dim accordionMenu As New Accordion()
accordionMenu.ID = "accordionMenu"
accordionMenu.EnableFill = True
accordionMenu.ShowBorder = False
accordionMenu.ShowHeader = False
Region2.Items.Add(accordionMenu)
' 绑定 Datatable 数据源到树控件
'Dim dt As DataTable = Class1.GetDTb("select * from MenuUrl")
'Dim ds As New DataSet
'ds.Tables.Add(dt)
Dim ds As DataSet
Dim myconnection As SqlConnection
Dim myadpt As SqlDataAdapter
myconnection = New SqlConnection(System.Web.Configuration.WebConfigurationManager.ConnectionStrings("sqlconstr").ToString.Trim)
myadpt = New SqlDataAdapter("select * from MenuUrl", myconnection)
ds = New DataSet()
myadpt.Fill(ds)
'添加表间关系,处理子树需要
ds.Relations.Add("TreeRelation", ds.Tables(0).Columns("Id"), ds.Tables(0).Columns("ParentId"), False)
For Each row As DataRow In ds.Tables(0).Rows
If row("ParentId") = 0 Then
'加载手风琴条
Dim accordionPane As New AccordionPane()
accordionPane.Title = row("Text").ToString()
accordionPane.Layout = Layout.Fit
accordionPane.ShowBorder = False
accordionPane.BodyPadding = "1px 0 0 0"
accordionMenu.Items.Add(accordionPane)
'加载内部中的树型项
Dim innerTree As New Tree()
innerTree.EnableArrows = True
innerTree.ShowBorder = False
innerTree.ShowHeader = False
innerTree.EnableIcons = False
innerTree.AutoScroll = True
accordionPane.Items.Add(innerTree)
Dim node As New FineUI.TreeNode()
node.Text = row("Text").ToString()
node.NavigateUrl = row("NavigateUrl").ToString()
node.Expanded = True
innerTree.Nodes.Add(node)
'加载子项
InitSubAccordionMenu(row, node)
' 重新设置每个节点的图标
ResolveTreeNode(innerTree.Nodes)
End If
Next
Return accordionMenu
myadpt.Dispose()
End Function
' 手风琴菜单-子树
Private Sub InitSubAccordionMenu(ByVal dataRow As DataRow, ByVal treeNode As FineUI.TreeNode)
Dim rows As DataRow() = dataRow.GetChildRows("TreeRelation")
If rows.Length > 0 Then
treeNode.Expanded = True
For Each row As DataRow In rows
Dim node As New FineUI.TreeNode()
node.Text = row("Text").ToString()
node.NavigateUrl = row("NavigateUrl").ToString()
treeNode.Nodes.Add(node)
InitSubAccordionMenu(row, node)
Next
End If
End Sub |