FineUI 官方论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

本论坛已关闭(禁止注册、发帖和回复)
请移步 三石和他的朋友们

FineUI首页 WebForms - MVC & Core - JavaScript 常见问题 - QQ群 - 十周年征文活动

FineUI(开源版) 下载源代码 - 下载空项目 - 获取ExtJS - 文档 在线示例 - 版本更新 - 捐赠作者 - 教程

升级到 ASP.NET Core 3.1,快、快、快! 全新ASP.NET Core,比WebForms还简单! 欢迎加入【三石和他的朋友们】(基础版下载)

搜索
查看: 2629|回复: 5
打印 上一主题 下一主题

关于用数据库来加载手风琴菜单

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-30 01:41:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我是根据三石的在线示例改的,手风琴菜单改为用数据库表来加载,但有点小问题,一级菜单在树中也有显示,如何不重复。
如图:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
沙发
发表于 2012-11-30 02:52:36 | 只看该作者
创建树时,把“基本信息”这个节点过滤掉就行了吧
板凳
 楼主| 发表于 2012-11-30 03:33:06 | 只看该作者
谢谢,不过,试了,好象仍是不行。
地板
 楼主| 发表于 2012-11-30 03:41:48 | 只看该作者
    ' 风手琴菜单:
    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
5#
发表于 2012-11-30 06:16:34 | 只看该作者
sanshi 发表于 2012-11-30 02:52
创建树时,把“基本信息”这个节点过滤掉就行了吧

三石兄,手风琴控件貌似不能支持动态加载(通过按钮事件重新绑定),还是我代码有问题?
6#
发表于 2012-11-30 06:26:07 | 只看该作者
刘军 发表于 2012-11-30 06:16
三石兄,手风琴控件貌似不能支持动态加载(通过按钮事件重新绑定),还是我代码有问题? ...

动态加载只能放在 Page_Init 中,这是Asp.Net本身架构的限制。

可以看我的博客:http://www.cnblogs.com/sanshi/archive/2012/11/19/2776672.html
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|FineUI 官方论坛 ( 皖ICP备2021006167号-1 )

GMT+8, 2025-5-22 19:46 , Processed in 0.047834 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表