Asked by:
Filter Treeview For PDF Documents

Question
-
User-666661156 posted
Hey Everyone,
I am populating a Treeview from a database with PDF documents. In SQL I have two tables, Table 1 contains a section ID and Section Name. Table 2 consists of the section ID and the name of the PDF file that needs to be displayed under each section. My issue is that the PDF file is being populated under the incorrect section even though the stored procedure is returning the result correctly.
Here's my code:
.VBPartial Class Controls_Resources Inherits System.Web.UI.UserControl Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load If Not Page.IsPostBack Then gvResources.DataSource = FranchiseePortal.GetResources(CInt(Session("userid"))) gvResources.DataBind() End If End Sub Protected Sub gvResources_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles gvResources.PreRender Dim tvResources As TreeView Dim secID As Integer Dim sectionname As String Dim ds As DataSet Dim row As DataRowView Dim filteredView1, filteredView2 As DataView Dim x, SectionID As Integer Dim NewNode As TreeNode Dim NewChildNode As TreeNode ds = FranchiseePortal.GetResources(CInt(Session("userid"))) Dim i As Integer For i = 0 To gvResources.Rows.Count - 1 tvResources = CType(gvResources.Rows(i).FindControl("tvResources"), TreeView) store = CInt(gvResources.Rows(i).Cells(0).Text) storename = CStr(ds.Tables(0).Rows(i).Item(1)) tvResources.Nodes(0).Text = sectionname tvResources.Nodes(0).SelectAction = TreeNodeSelectAction.Expand tvResources.Nodes(0).Expanded = True tvResources.Nodes(0).ImageUrl = "../images/dicon_folder_closed.gif" filteredView1 = New DataView(ds.Tables(1)) filteredView1.RowFilter = "SectionID =" & secID For Each row In filteredView1 SectionID = CInt(row("SectionID")) NewNode = New TreeNode(row("ReportName").ToString(), row("SectionID").ToString()) NewNode.SelectAction = TreeNodeSelectAction.Expand NewNode.Expanded = False NewNode.ImageUrl = "../images/dicon_folder_closed.gif" filteredView2 = New DataView(ds.Tables(1)) filteredView2.RowFilter = "SectionID =" & secID Dim row2 As DataRowView For Each row2 In filteredView2 If x = 0 Then If Not IsDBNull(filteredView2.Item(x).Item("ReportName")) Then NewChildNode = New TreeNode(filteredView2.Item(x).Item("ReportName").ToString()) NewChildNode.NavigateUrl = "../PDFviewer.aspx?secID=" & secID NewChildNode.Target = "_blank" NewChildNode.ImageUrl = "../Images/dicon_pdf.gif" NewNode.ChildNodes.Add(NewChildNode) End If End If Next Next NewNode.PopulateOnDemand = False tvResources.Nodes(0).ChildNodes.Add(NewNode) Next End Sub End Class
Control Code:
<%@ Control Language="VB" AutoEventWireup="false" CodeFile="Resources.ascx.vb" Inherits="Controls_Resources" %> <asp:GridView runat="server" ID="gvResources" AutoGenerateColumns="False" Width="100%" BorderWidth="1" CssClass="promoBox" BorderColor="black"> <HeaderStyle BackColor="Black" ForeColor="White" HorizontalAlign="Center" Font-Size="Smaller"/> <Columns> <asp:BoundField DataField="SectionID" HeaderText="Resource #"> <HeaderStyle Width="20%" /> <ItemStyle HorizontalAlign="Center" VerticalAlign="Middle" Wrap="False" /> </asp:BoundField> <asp:TemplateField HeaderText="Section Name"> <ItemTemplate> <asp:TreeView runat="server" ID="tvResources" MaxDataBindDepth="5"> <Nodes> <asp:TreeNode Text="Name" Value="SectionName"></asp:TreeNode> </Nodes> </asp:TreeView> </ItemTemplate> <HeaderStyle HorizontalAlign="Center" Width="60%" /> <ItemStyle HorizontalAlign="Left" VerticalAlign="Middle" /> </asp:TemplateField> </Columns> </asp:GridView>
This is the outcome:
[url=http://postimg.org/image/ho7q7lnyr/][img]http://s13.postimg.org/ho7q7lnyr/Untitled.jpg[/img][/url]The PDF should be under Section 1 and not Section 4. Any ideas?
Thanks!
Tuesday, November 19, 2013 4:39 PM
All replies
-
User488649576 posted
Hi,
According to your description and the code you provided, I think you should debug the function gvResources_PreRender(), to debug it steps by steps, to find in which rows, it will display the document.
Maybe we should update the logic of the code.
Wednesday, November 20, 2013 3:29 AM -
User-666661156 posted
I tried changing the value of X to 1 or 2 but it didn't change anything. Although while stepping through the code on this line
NewChildNode = New TreeNode(filteredView2.Item(x).Item("ReportName").ToString())
The PDF filename is being recognized under the correct section so I'm not sure as to what's happening. When I add additional filenames into different sections they get put into the appropriate section only though they first start at Section 4 for some reason and the move their way upwards to the other sections.
Wednesday, November 20, 2013 10:23 AM