Avatar billede curriculum Nybegynder
22. november 2005 - 00:14 Der er 11 kommentarer og
1 løsning

Event fire problem med treeview

Jeg er i gang at lave et simpelt dynamisk treeview, dog uden +'er (expands), derfor har jeg sat showExpandCollapse til false på min control, men så virker expand/collapse funktionerne ikke. Hvorfor ? eller hvordan løser jeg problemet ?
Avatar billede dr_chaos Nybegynder
22. november 2005 - 07:06 #1
har du sæt select til select expand ?
Avatar billede dr_chaos Nybegynder
22. november 2005 - 07:08 #2
du skal finde den del af treeviewet der hedder SelectAction og sætte den til SelectExpand.
eller Expand,
Avatar billede curriculum Nybegynder
22. november 2005 - 09:54 #3
Nej den fungerer ikke...
Hvis jeg sætter min ShowExpandCollapse til true i treeview control'en, så udfolder menu'en sig vde at klikke på plus'et, men jeggerne have den at fungere uden plus'erne.
Avatar billede curriculum Nybegynder
22. november 2005 - 09:55 #4
Her er al koden:

<asp:TreeView ID="tvMenu" BackColor="#E2E9EF" ExpandDepth="0" CssClass="treeview" ShowExpandCollapse="true" runat="server" Width="148px" PopulateNodesFromClient="true" >
<ParentNodeStyle CssClass="parentnode" Width="148px" />
<LeafNodeStyle CssClass="leafnode" Width="148px" />
<SelectedNodeStyle CssClass="selectednode" Font-Bold="True" Width="148px" />
</asp:TreeView>

Private Sub PopulateRootLevel()
        Dim objConn As New SqlConnection(ConfigurationManager.ConnectionStrings("CONN").ToString)
        Dim objCommand As New SqlCommand("EXEC usr_qPS_GetFolders @uiParent, @uiUser", objConn)
        objCommand.Parameters.Add("@uiParent", SqlDbType.NChar).Value = ConfigurationManager.AppSettings("MENU").ToString
        objCommand.Parameters.Add("@uiUser", SqlDbType.NChar).Value = ConfigurationManager.AppSettings("USER").ToString

        Dim da As New SqlDataAdapter(objCommand)
        Dim dt As New DataTable()
        da.Fill(dt)

        PopulateNodes(dt, tvMenu.Nodes)
End Sub

Private Sub PopulateNodes(ByVal dt As DataTable, ByVal nodes As TreeNodeCollection)
        For Each dr As DataRow In dt.Rows
            Dim tn As New TreeNode()
            tn.Text = dr("sName").ToString()
            tn.Value = dr("uiFolder").ToString()

            If dr("sType").ToString.ToUpper = "FOLDER" Then
                tn.NavigateUrl = "Default.aspx?FolderID=" & dr("uiFolder").ToString()
            Else
                tn.NavigateUrl = "Default.aspx?DocID=" & dr("uiFolder").ToString()
            End If

            tn.SelectAction = TreeNodeSelectAction.SelectExpand
            nodes.Add(tn)

            'If node has child nodes, then enable on-demand populating
            tn.PopulateOnDemand = (CInt(dr("iHasDocs")) > 0)
        Next
End Sub

Private Sub PopulateSubLevel(ByVal uiParent As String, ByVal parentNode As TreeNode)
        Dim objConn As New SqlConnection(ConfigurationManager.ConnectionStrings("CONN").ToString)
        Dim objCommand As New SqlCommand("EXEC usr_get_menu @uiParent", objConn)
        objCommand.Parameters.Add("@uiParent", SqlDbType.NChar).Value = uiParent.ToString

        Dim da As New SqlDataAdapter(objCommand)
        Dim dt As New DataTable()
        da.Fill(dt)

        PopulateNodes(dt, parentNode.ChildNodes)
End Sub

Protected Sub tvMenu_TreeNodePopulate(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.TreeNodeEventArgs) Handles tvMenu.TreeNodePopulate
        PopulateSubLevel(e.Node.Value, e.Node)
End Sub
Avatar billede dr_chaos Nybegynder
22. november 2005 - 10:02 #5
prøv med :
<asp:TreeView ID="tvMenu" BackColor="#E2E9EF" ExpandDepth="0" CssClass="treeview" ShowExpandCollapse="true" runat="server" Width="148px" PopulateNodesFromClient="true" >
<ParentNodeStyle CssClass="parentnode" Width="148px" />
<LeafNodeStyle CssClass="leafnode" Width="148px" />
<SelectedNodeStyle CssClass="selectednode" Font-Bold="True" Width="148px" />
<DataBindings>
        <asp:TreeNodeBinding  SelectAction="SelectExpand"/>
        <asp:TreeNodeBinding  SelectAction="SelectExpand"/>
        <asp:TreeNodeBinding  SelectAction="SelectExpand"/>
    </DataBindings>
</asp:TreeView>

Private Sub PopulateRootLevel()
        Dim objConn As New SqlConnection(ConfigurationManager.ConnectionStrings("CONN").ToString)
        Dim objCommand As New SqlCommand("EXEC usr_qPS_GetFolders @uiParent, @uiUser", objConn)
        objCommand.Parameters.Add("@uiParent", SqlDbType.NChar).Value = ConfigurationManager.AppSettings("MENU").ToString
        objCommand.Parameters.Add("@uiUser", SqlDbType.NChar).Value = ConfigurationManager.AppSettings("USER").ToString

        Dim da As New SqlDataAdapter(objCommand)
        Dim dt As New DataTable()
        da.Fill(dt)

        PopulateNodes(dt, tvMenu.Nodes)
End Sub

Private Sub PopulateNodes(ByVal dt As DataTable, ByVal nodes As TreeNodeCollection)
        For Each dr As DataRow In dt.Rows
            Dim tn As New TreeNode()
            tn.Text = dr("sName").ToString()
            tn.Value = dr("uiFolder").ToString()

            If dr("sType").ToString.ToUpper = "FOLDER" Then
                tn.NavigateUrl = "Default.aspx?FolderID=" & dr("uiFolder").ToString()
            Else
                tn.NavigateUrl = "Default.aspx?DocID=" & dr("uiFolder").ToString()
            End If

            tn.SelectAction = TreeNodeSelectAction.SelectExpand
            nodes.Add(tn)

            'If node has child nodes, then enable on-demand populating
            tn.PopulateOnDemand = (CInt(dr("iHasDocs")) > 0)
        Next
End Sub

Private Sub PopulateSubLevel(ByVal uiParent As String, ByVal parentNode As TreeNode)
        Dim objConn As New SqlConnection(ConfigurationManager.ConnectionStrings("CONN").ToString)
        Dim objCommand As New SqlCommand("EXEC usr_get_menu @uiParent", objConn)
        objCommand.Parameters.Add("@uiParent", SqlDbType.NChar).Value = uiParent.ToString

        Dim da As New SqlDataAdapter(objCommand)
        Dim dt As New DataTable()
        da.Fill(dt)

        PopulateNodes(dt, parentNode.ChildNodes)
End Sub

Protected Sub tvMenu_TreeNodePopulate(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.TreeNodeEventArgs) Handles tvMenu.TreeNodePopulate
        PopulateSubLevel(e.Node.Value, e.Node)
End Sub
Avatar billede curriculum Nybegynder
22. november 2005 - 10:13 #6
jeg bliver helt rundtosset af den her... og den fungerer bare ikke...
Avatar billede dr_chaos Nybegynder
22. november 2005 - 10:17 #7
hvordan tilføjer du niveau1 på træet ?
Avatar billede curriculum Nybegynder
22. november 2005 - 10:19 #8
PopulateSubLevel(e.Node.Value, e.Node) event handleren
Avatar billede dr_chaos Nybegynder
22. november 2005 - 10:23 #9
jeg tror måske ikke at du kan have navigatetourl og expand på samme punkt.
Avatar billede curriculum Nybegynder
22. november 2005 - 10:30 #10
nu kom jeg tættere på løsningen med ikke at bruge navigate url og expand på samme tidspunkt...
Avatar billede curriculum Nybegynder
22. november 2005 - 10:31 #11
Nå den er hjemme :) nu mangler jeg kun at style min menu.... send venligst et svar...
Avatar billede dr_chaos Nybegynder
22. november 2005 - 10:34 #12
svar :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester