lørdag, januar 23, 2021

ASP.NET TreeView

Daily Rush Debat Programmering ASP.NET TreeView

  • Forfatter
    Emne
  • #0

    Thormam
    Bruger
    4.043 indlæg
    Offline

    Har en lille ting der driller. Har lavet et TreeView på en asp side og vil gerne have en value med når man trykker på en node der har NavigateUrl.

    Kan jeg lave en generel regel? Er nemlig value fra en textbox der skal med uanset hvilken node der bliver valgt. Eller hvordan kan jeg fange den enkelte node?

    Her er et kikset forsøg:

    TreeView hedder “Ardo”

    node hedder “cisco”

    protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
    {
    if (Ardo.SelectedNode.Value == “cisco”)
    {
    Response.Redirect(“cisco.aspx?navn=” + lbl_navn.Text);
    }
    }

    Ville egentlig være perfekt hvis man kunne lave en generel regel at den bare skal tage value med fra en textbox uanset hvortil..

    protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
    {
    if (Ardo.SelectedNodeChanged)
    {
    Response.Redirect(“ALLELINKS.aspx?navn=” + lbl_navn.Text);
    }
    }

    SKAL man angive en bestem side i respons.redirect eller kan man angive en “allelinks” heh

    håber det er en smule forståeligt

Viser 15 kommentarer - 1 til 15 (af 16 i alt)
  • Forfatter
    Kommentarer
  • #1

    Wayfarer
    Bruger
    5.714 indlæg
    Offline

    Ved ikke lige om jeg helt har forsået dit problem, men er det at du vil tage en værdi med fra en side når du går over til en anden?

    hvis så er en mulighed at bruge Session.

    EG
    Session[“value”] = lbl_navn.Text;

    og nå du skal bruge værdien igen
    string str = (string)Session[“value”];
    (eller string str = Session[“value”].Tostring();)

    Dataet bliver så gemt indtil du enten nullstiller session objectet, eller sessionen løber ud (kan indstilles)

    Du kan også bruge andre states som viewstate (den kommer så ned til clienten (client side), mens session er på serveren)..
    Personligt kan jeg bedst lide Serverside management, men det er KUN og KUN en personligt holdning (jeg siger ikke at det ER best, jeg siger at jeg bedst kan lide det)

    Du kan læse mere om andre states her
    http://www.csharphelp.com/archives/archive207.html
    du skal dog IKKE bruge Application state objectet til dette problem, da Application state er delt mellem ALLE, dvs alle vil have den samme værdi…

    UPDATE ups havde lige sat den forkerte værdi når du extracter værdien fra session objected, er dog fixed.

    I believe our future depends powerfully on how well we understand this cosmos in which we float like a mote of dust in the morning sky. -Carl Sagan

    #2

    Holger-IST-
    Bruger
    6.970 indlæg
    Offline

    Hm… altså du burde jo kunne få fat i den knap (eller hvad det nu er) du trykker på, det er hvad “object sender” delen er, dvs du kan gøre noget lign:

    {
    var btn = object as Button;
    if (btn != null)
    {
    Response.Redirect(“ALLELINKS.aspx?navn=” + btn.Text);
    }
    }

    ved ikke om det hjælper

    - Holger "A woman drove me to drink and I didn't even have the decency to thank her." - W. C. Fields

    #3

    Thormam
    Bruger
    4.043 indlæg
    Offline

    skrev ALLELINKS for at vise jeg mangler noget der refere til alle sider jeg går til skal indholdet af lbl_navn.text medtages som værdi

    #1 Prøver lig edit eksempel men er session ikke kun til C# windows applikationer? Kan Sessions bruges på en webside? Mener jeg ikke men jeg prøver da

    #4

    Holger-IST-
    Bruger
    6.970 indlæg
    Offline

    #3:
    session kan sagtens bruges på websider, du kan også bruge asp.net caching til at gemme noget, hvis det skal være generelt for alle brugere

    - Holger "A woman drove me to drink and I didn't even have the decency to thank her." - W. C. Fields

    #5

    hausner
    Moderator
    17.187 indlæg
    Offline

    #3
    En session ifm. websider varer fra du åbner din browser til du lukker den igen.

    Planter er fascinerende

    #6

    Holger-IST-
    Bruger
    6.970 indlæg
    Offline

    Ah havde overset det med at du altid skulle tage teksten med fra en textbox… bliver den skiftet ud dynamisk eller hvad?

    anyway dit andet eksempel burde fungerer, dog behøves du Ardo.SelectedN­odeChanged, da metoden kun lbiver kaldt på SelectedNodeChanged, hvis du har bindet den til den event

    EDIT:
    men måske du skulle beskrive præcist hvad det er du vil… altså er det noget menu struktur du skal bygge op?

    - Holger "A woman drove me to drink and I didn't even have the decency to thank her." - W. C. Fields

    #7

    Thormam
    Bruger
    4.043 indlæg
    Offline

    ok lad mig forklare

    Jeg har lavet et tree til en hjemmeside i asp.net

    http://i28.tinypic.com/1zug5j.png

    Bliver selvfølgelig større når jeg lige får det her til at spille

    på noden “cisco” er der NavigateUrl på til cisco.aspx

    Når der kommer en ny node kaldet “ip adresser” f.eks kommer den til at få en NavigateUrl til ip.aspx

    Fælles for dem er at når man klikker på dem og man bliver ført videre til cisco.aspx f.eks skal indholdet fra lbl_navn.Text med som value da jeg skal bruge det til automatisk udfyldelse af et felt på næste side.

    Så spørgsmålet er om jeg lave en generel regel at ligegyldigt hvilken node jeg trykker på og ligegyldigt hvilken side jeg bliver henvist til – kan angive at lbl_navn.Text skal med som value.

    Eller om jeg skal angive det ved hver node.

    og hvordan

    #8

    Holger-IST-
    Bruger
    6.970 indlæg
    Offline

    Så dit problem er at den hopper videre til din NavigateUrl, men ikke kører din SelectedIndexChanged event (og derved ikke får dit lbl_navn.text med)?

    Og er lbl_navn noget som brugeren taster ind, eller er den sat programatisk, for så kan du jo (lidt afhængigt af hvordan du bygger dit træ), sætte værdien når du laver dine noder.

    jeg tror nemlig ikke helt jeg forstår idéen med den textbox. altså skal den f.eks. bruges til at gennem den forrige node eller måske gemme noget som brugeren taster ind et sted og som så skal videre til næste side ?

    men måske der er nogle eksempler på http://quickstarts.asp.net/QuickStartv20/aspnet/doc/ctrlref/navigation/treeview.aspx du kan bruge ?

    - Holger "A woman drove me to drink and I didn't even have the decency to thank her." - W. C. Fields

    #9

    Wayfarer
    Bruger
    5.714 indlæg
    Offline

    #3 nej nej Diverse states (incl session) bliver brugt rigtigt meget i asp.net sites…

    I believe our future depends powerfully on how well we understand this cosmos in which we float like a mote of dust in the morning sky. -Carl Sagan

    #10

    Thormam
    Bruger
    4.043 indlæg
    Offline

    Har fået Session til at virke. Prøvede bare med en knap der sendte mig videre til cisco.aspx og brugte session.

    Men men men der er noget der driller. Den er ikke glad for at blive konverteret til string.

    Lige nu er indholdet af lbl_navn fra siden main.aspx gemt i Session[“value”]

    på cisco.aspx kan jeg få følgende til at virke:

    if (Session[“value”] == “Jens Jensen”)
    lbl_test.Text = “Jens Jensen”;

    Men det giver jo uendelige mange if’er

    if (Session[“value”] != null)
    lbltest.Text = Session[“value”];

    giver fejlen: Typen ‘object’ kan ikke konverteres implicit til ‘string’. Der findes en eksplicit konvertering (mangler der en cast?)

    lbl_navn.Text = Session[“value”].ToString;

    Giver fejlen: Metodegruppen ‘ToString’ kan ikke konverteres til ikke-stedfortrædertypen ‘string’. Ønskede du at kalde metoden?

    grr

    #11

    Thormam
    Bruger
    4.043 indlæg
    Offline

    ahhh det er mig der mangler noget

    if (Session[“value”] != null)
    lbl_navn.Text = Session[“value”].ToString();

    eller bare

    lbl_navn.Text = Session[“value”].ToString();

    selvfølgelig () jeg manglede

    Tak for hints Nu kan jeg endelig komme videre!

    #12

    Holger-IST-
    Bruger
    6.970 indlæg
    Offline

    Du kan/skal sådan set også caste den, for du kan jo gemme mere end strings i Session, du kan også gemme andre objekter.

    så f.eks. sådan her:

    string s = Session[“value­”] as String;
    if (s != null)
    {
    lbl_navn.Text = s;
    }

    - Holger "A woman drove me to drink and I didn't even have the decency to thank her." - W. C. Fields

    #13

    Wayfarer
    Bruger
    5.714 indlæg
    Offline

    #12 yep, men #0 du skal huske på et Session er objekter i hukommelsen på serveren, så put ALDRIG større objekter som grafiske objekter i session.

    I believe our future depends powerfully on how well we understand this cosmos in which we float like a mote of dust in the morning sky. -Carl Sagan

    #14

    Holger-IST-
    Bruger
    6.970 indlæg
    Offline

    #13: yes yes I know, forklarede det til thoram…

    - Holger "A woman drove me to drink and I didn't even have the decency to thank her." - W. C. Fields

    #15

    Wayfarer
    Bruger
    5.714 indlæg
    Offline

    #14 ved jeg, også derfor jeg referende sætningen til #0 efter men

    I believe our future depends powerfully on how well we understand this cosmos in which we float like a mote of dust in the morning sky. -Carl Sagan

Viser 15 kommentarer - 1 til 15 (af 16 i alt)
  • Du skal være logget ind for at kommentere på dette indlæg.