【问题标题】:Format SQL Query Result into web menu将 SQL 查询结果格式化为 web 菜单
【发布时间】:2012-09-06 06:23:15
【问题描述】:

我正在尝试为我的网站创建一个向下钻取菜单,用户将在其中单击一个类别,它将显示该单击类别的子类别,可能有 n 级。 我能够编写 sql 查询,它完全按照我的意愿返回输出,但问题是......我不想向最终用户显示整个菜单,我想打开/展开仅单击的类别。

    my Query output is:

1 IPTV
2      Jadoo Tv
3      Shava Tv
4      Jalva Tv
5 Programming
6      Microsoft
7           Asp.Net
8      PHP

所以默认情况下应该显示 IPTV & Programming,因为它们是父级,当我点击 IPTV 时,它应该打开 IPTV 的子级,就像我说的可能有 n 级。

我在想,我可以将查询的输出加载到网页,然后用 css/javascript 控制菜单导航。

你们有什么想法吗?

【问题讨论】:

  • 如果有代码,可以添加吗?
  • 我想弄清楚如何编写代码。到目前为止,我认为我只会将菜单加载到网页,并使用 CSS 将所有子类别的显示设置为“无”,然后对于每个类别,我都会将类别树作为 GET 参数传递。例如对于 Asp.net,我将传递 2,3,4 (2=Programming,3=Microsoft,4=Asp.net),然后使用代码我将仅将这些子类别设置为显示和隐藏。您如何看待这种方法?
  • 是的,这可能是一个好方法。让 SQL 查询返回一个菜单项数组,然后循环出这些项并为每个项添加一个类或 id,然后使用 CSS 或 CSS 和 JS 的组合来控制视图。
  • 我正在返回如您在上面的代码示例中看到的行,并在左侧填充了正确数量的空格。然后只是在网页上显示它们(因为 CTE 查询进行了排序和格式化)。
  • 你需要一些标记来使用 CSS 和/或 JS...

标签: javascript asp.net css


【解决方案1】:

好的,这是标记的完整代码(在我从 sql sp 得到结果之后)。

    Private Sub CreateLeftMenu()

    Dim dt As DataTable = DAL.ReturnMSSQLData("EXEc CategoryTree")
    Dim str As New StringBuilder

    Dim catname As String = ""
    Dim catid As Integer = 0
    Dim parent As Integer = 0
    Dim sort As String = ""
    Dim keys As Array

    Dim display As String = "none"

    For Each item As DataRow In dt.Rows

        catname = Replace(item("CatName"), " ", " ")
        catid = item("id")
        parent = item("parent")
        sort = item("sort")

        If parent = 0 Then
            str.Append("<div class='group_" & parent & "'><a href='/pages/index.aspx?cat=" & sort & "' id='group_" & catid & "'>" & catname & "</a></div>")
        Else

            If Len(Me.GroupID) > 0 Then
                keys = Split(Me.GroupID, "_")

                For Each item1 As String In keys
                    If CInt(item1) = parent Then
                        str.Append("<div class='group_" & parent & "' style='display:block'><a style='text-decoration:none' href='/pages/index.aspx?cat=" & sort & "' id='group_" & catid & "'>" & catname & "</a></div>")
                    Else
                        'str.Append("<div class='group_" & parent & "' style='display:none'><a style='text-decoration:none' href='/pages/index.aspx?cat=" & sort & "' id='group_" & catid & "'>" & catname & "</a></div>")
                    End If
                Next

            End If



        End If

    Next

    LMenu.Text = str.ToString

End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    • 2012-03-09
    • 1970-01-01
    相关资源
    最近更新 更多