hi
i have a side navbar menu which has 5 parent id i am trying to display a data driven menu.
the 1st, 2nd, 4th and 5th parent id is showing the submenus but the 3rd one is not showing anything. pls. guide.
below is the code for it.
html:
HTML Code:<div id="mySidenav" class="sidenav"> <a href="javascript:void(0)" class="closebtn" onclick="closeNav()">×</a> <div> <%--<div class="brand"> AspSnippets</div>--%> <%--<i class="fa fa-bars fa-2x toggle-btn" data-toggle="collapse" data-target="#menu-content"> </i>--%> <div class="menu-list"> <asp:Repeater ID="rptCategories" runat="server" OnItemDataBound="rptMenu_OnItemBound"> <ItemTemplate> <li data-toggle="collapse" data-target='#<%#Eval("InnerHtml") %>' class="collapsed"><a href='<%#Eval("Url") %>' style="font-size: medium" ><i class='<%#Eval("CssFont") %>'></i> <%#Eval("InnerHtml")%><span class="arrow"></span></a> </li> <asp:Literal ID="ltrlSubMenu" runat="server" ></asp:Literal> </ItemTemplate> </asp:Repeater> </div> </div> </div> <div id="main"> <span style="font-size: 30px; cursor: pointer" onclick="openNav()"> Open Menu</span> </div> <script> function openNav() { document.getElementById("mySidenav").style.width = "250px"; document.getElementById("main").style.marginLeft = "250px"; } function closeNav() { document.getElementById("mySidenav").style.width = "0"; document.getElementById("main").style.marginLeft = "0"; } </script>i have checked the datatable all the records are perfect in that. seems i am missing out on some minor point.Code:Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load If Not Me.IsPostBack Then Me.BindMenu() End If End Sub Protected Sub rptMenu_OnItemBound(sender As Object, e As RepeaterItemEventArgs) If e.Item.ItemType = ListItemType.Item OrElse e.Item.ItemType = ListItemType.AlternatingItem Then If e.Item.ItemType = ListItemType.Item OrElse e.Item.ItemType = ListItemType.AlternatingItem Then If Menus IsNot Nothing Then Dim drv As DataRowView = TryCast(e.Item.DataItem, DataRowView) Dim ID As String = drv("MainID").ToString() Dim Title As String = drv("InnerHtml").ToString() Dim rows As DataRow() = Menus.[Select](Convert.ToString("ParentId=") & ID) If rows.Length > 0 Then Dim sb As New StringBuilder() sb.Append((Convert.ToString("<ul id='") & Title) + "' class='sub-menu collapse'>") For Each item In rows Dim parentId As String = item("MainID").ToString() Dim parentTitle As String = item("InnerHtml").ToString() Dim parentRow As DataRow() = Menus.[Select](Convert.ToString("ParentId=") & parentId) If parentRow.Count() > 0 Then sb.Append((Convert.ToString("<li data-toggle='collapse' data-target='#") & parentTitle) + "' class='collapsed'><a style='font-size: medium' href='" + item("Url") + "'>" + item("InnerHtml") + "<span class='arrow'></span></a>") sb.Append("</li>") Else sb.Append("<li><a style='font-size: medium' href='" + item("Url") + "'>" + item("InnerHtml") + "</a>") sb.Append("</li>") End If sb = CreateChild(sb, parentId, parentTitle, parentRow) Next sb.Append("</ul>") TryCast(e.Item.FindControl("ltrlSubMenu"), Literal).Text = sb.ToString() End If End If End If End If End Sub Private Function CreateChild(sb As StringBuilder, parentId As String, parentTitle As String, parentRows As DataRow()) As StringBuilder If parentRows.Length > 0 Then sb.Append((Convert.ToString("<ul id='") & parentTitle) + "' class='sub-menu collapse'>") For Each item In parentRows Dim childId As String = item("MainID").ToString() Dim childTitle As String = item("InnerHtml").ToString() Dim childRow As DataRow() = Menus.[Select](Convert.ToString("ParentId=") & childId) If childRow.Count() > 0 Then sb.Append((Convert.ToString("<li data-toggle='collapse' data-target='#") & childTitle) + "' class='collapsed'><a style='font-size: medium' href='" + item("Url") + "'>" + item("InnerHtml") + "<span class='arrow'></span></a>") sb.Append("</li>") Else sb.Append("<li><a style='font-size: medium' href='" + item("Url") + "'>" + item("InnerHtml") + "</a>") sb.Append("</li>") End If CreateChild(sb, childId, childTitle, childRow) Next sb.Append("</ul>") End If Return sb End Function Private Sub BindMenu() ' Menus = GetData("SELECT [MenuId], [ParentMenuId], [Title], [Description], [Url],[CssFont] FROM [Menus]") Menus = GetData("SELECT [MainID], [ParentId], [InnerHtml], [InnerHtml], [Url],[CssFont] FROM [MenuList] WHERE LoginType = 'Admin' Order By MyOrder") Dim view As New DataView(Menus) view.RowFilter = "ParentId=0" Me.rptCategories.DataSource = view Me.rptCategories.DataBind() 'Menus = GetData("SELECT [MenuId], [ParentMenuId], [Title], [Description], [Url],[CssFont] FROM [Menus]") 'Dim view As New DataView(Menus) 'view.RowFilter = "ParentMenuId=0" 'Me.rptCategories.DataSource = view 'Me.rptCategories.DataBind() End Sub Private Function GetData(query As String) As DataTable Dim dt As New DataTable() Dim constr As String = ConfigurationManager.ConnectionStrings("SqlConnectionString").ConnectionString Using con As New SqlConnection(constr) Using cmd As New SqlCommand(query) Using sda As New SqlDataAdapter() cmd.CommandType = CommandType.Text cmd.Connection = con sda.SelectCommand = cmd sda.Fill(dt) End Using End Using Return dt End Using End Function
Thanks in advance




Reply With Quote
