Avatar billede meho_tarevci Nybegynder
16. april 2007 - 12:08 Der er 15 kommentarer og
1 løsning

Treeview og NavigateURL problem

Jeg har en treeview kontrol. Og jeg henter data fra en sql databese
Jeg ønsker at når jeg klikke på et bestemt menu punkt i treeview så vises tilsvarende tekst på min side!

Jeg kan få den til at vise teksten i min side, men på den måde får jeg hele indholdet vist også i adresse bar og det vil jeg helst undgå

Dvs. når jeg klikker på et tekst punkt i treeview indholdet vises in Literal1.Text, men den vises også i adresse bar sådan her:

…test.aspx?action=Dette er tekst………


    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Literal1.Text = Context.Request.QueryString("action")

        If Not IsPostBack Then

            PopulateNodes()

        End If

    End Sub



Function gettreeviewdata() As DataSet


End Function


Sub PopulateNodes()
        Dim dst As DataSet = gettreeviewdata()

        For Each masterRow As DataRow In dst.Tables("tblMenu").Rows
            Dim masterNode As New TreeNode(masterRow("menu_navn").ToString())
            TreeView1.Nodes.Add(masterNode)
            For Each childRow As DataRow In masterRow.GetChildRows("Children")
                Dim childNode As New TreeNode(childRow("text_overskrift").ToString())
                childNode.NavigateUrl = ("test.aspx?action=" & (childRow("text_indhold").ToString()))
                masterNode.ChildNodes.Add(childNode)
          Next
        Next
       
    End Sub
Avatar billede websam Nybegynder
16. april 2007 - 12:16 #1
I denne linie sætter du jo oxo indholdte til at komme med i din url :

childNode.NavigateUrl = ("test.aspx?action=" & (childRow("text_indhold").ToString()))

Så de ter vel meningen at du vil have det med når du sætter det der ?
Avatar billede websam Nybegynder
16. april 2007 - 12:17 #2
Det var måske mere hensigts mæssigt at trække et id med ud i din url, som du så benytter til at finde din tekst med ?
Avatar billede meho_tarevci Nybegynder
16. april 2007 - 12:22 #3
Tak for hurtigt svar
Ja, jeg er godt klar over at jeg sender indholdet med querystring.
Jeg viste ikke anden måde at gøre det på :)

Kan du give et eksampel på hvordan jeg kan finde teksten hvis jeg give text_id med i url
Avatar billede websam Nybegynder
16. april 2007 - 12:27 #4
Det trækker du blot fra dit dataset som du i forvejen laver i denne linie :

Dim dst As DataSet = gettreeviewdata()

her må du jo have alle dine data fra tabellen liggende og så kan du jo blot lave et udtræk med id'et fra url'en og på den måde få vist det ønskede.

Ellers trækker du det blot fra databasen ;o)

/Websam
Avatar billede websam Nybegynder
16. april 2007 - 12:31 #5
Og med en hurtig søgning på Google fandt jeg lidt du kunne prøve at kigge på :

http://www.dotnethero.com/hero/DataSet/Search.aspx?nmx=3_5
Avatar billede meho_tarevci Nybegynder
16. april 2007 - 12:39 #6
Jeg prøvede lige at kikke på eksemplet men er ikke helt med


Hvis jeg laver denne line


childNode.NavigateUrl = ("test.aspx?action=" & (childRow("text_indhold").ToString()))


om til



childNode.NavigateUrl = ("test.aspx?action=" & (childRow("text_id").ToString()))


Så få jeg dejligt URL med test.aspx?action=213

Men det får jeg selvfølgeligt også i min Literal1.Text.

Hvordan kan jeg så beholde ”dejligt” URL test.aspx?action=213
i adresse bar og samtidigt får indholdet (text_indhold) i Literatl1.Text
Avatar billede websam Nybegynder
16. april 2007 - 13:14 #7
Ja og grunden til det er at du laver følgende :

Literal1.Text = Context.Request.QueryString("action")
Avatar billede meho_tarevci Nybegynder
16. april 2007 - 13:23 #8
Ja men
Hvordan får jeg teksten (text_indhold) vist på siden hvis jeg ikke bruge Literal1.Text
Avatar billede websam Nybegynder
16. april 2007 - 14:01 #9
Jeg har ikke lige tid til at lave et eksempel til dig nu da jeg er på arbejde, men kan lave et når jeg kommer hjem.
Avatar billede meho_tarevci Nybegynder
16. april 2007 - 14:05 #10
Ok, tak for det
Jeg vil meget gerne se et eksempel på det
Avatar billede websam Nybegynder
16. april 2007 - 17:04 #11
Først laver du et dataview :

    Dim Dv As DataView = New DataView

Dernæst fylder du dit dataview med data :

    Dv.Table = gettreeviewdata().Tables("tblMenu")

Du har nu muligheden for at søge i dit dataview :

    Dv.RowFilter = "text_id = " & Request.QueryString("action") & ""

Og til sidst kan du så smide det data du vil i din literal :

    Literal1.Text.Text = Dv(0)("text_indhold")

Håber du kan bruge det til noget ;o)

/Websam
Avatar billede websam Nybegynder
16. april 2007 - 17:05 #12
Ups, skal selvfølgelig være :

Literal1.Text = Dv(0)("text_indhold")
Avatar billede meho_tarevci Nybegynder
17. april 2007 - 09:37 #13
hej websem og tak for dit eksempel

når jeg kører eksemplet får jeg følgende fejl

Syntax error: Missing operand after '=' operator.

Og der henvises til linie:

Dv.RowFilter = "text_id=" & Request.QueryString("action") & ""

Siger det dig noget?
Avatar billede websam Nybegynder
17. april 2007 - 16:07 #14
Det er fordi din ?action ikke har en værdi med prøv at sætte

if request.querystring("action") <> "" then

end if

rundt om den kode jeg viste dig igår.

/Websam
Avatar billede meho_tarevci Nybegynder
19. april 2007 - 15:12 #15
Ja nu virker det.
Tusind tak for hjælp websam
Læg lige et svar
Avatar billede websam Nybegynder
19. april 2007 - 21:27 #16
Super at du fik det til at virke ;o)
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