2012-09-06 45 views
0

我想为我的网站添加一个向下钻取菜单,在这里用户将点击一个类别,它将显示该点击类别的子类别,可能有n级别。 我能够编写SQL查询返回输出exactaly我想要的,但问题是...我不想显示整个菜单最终用户,我想打开/展开只有点击的类别。将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 &编程应显示,因为他们是父母,当我点击IPTV应该打开IPTV的孩子,就像我说的有可能是正的水平。

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

你们有什么想法吗?

+0

如果您有任何问题,您可以添加您的代码吗? – jtheman

+0

我想弄清楚如何编写代码。到目前为止,我认为我只是将菜单加载到网页,并将CSS设置显示为所有子类别的“none”,然后对于每个类别,我都会将类别树作为GET参数传递。例如对于Asp.net我会通过2,3,4(2 =编程,3 =微软,4 = Asp.net),然后用代码我将只设置这些子类别显示和休息隐藏。你对这种方法有什么看法? – highwingers

+0

可能是一个好方法。使SQL查询返回一个菜单项数组,然后循环出项目并为每个项添加一个类或ID,然后使用CSS或CSS和JS的组合来控制视图。 – jtheman

回答

0

好的,这里是完整的标记代码(从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