ASP.NET TreeView
Daily Rush › Debat › Programmering › ASP.NET TreeView
- Dette indlæg indeholder 16 kommentarer, har 4 deltagere og blev senest opdateret af
Holger-IST- for 11 år, 4 måneder siden.
- ForfatterEmne
- 15/09/2009 kl. 13:20#0
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
- ForfatterEmne
- ForfatterKommentarer
- 15/09/2009 kl. 13:34 #1
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
15/09/2009 kl. 14:00 #2Hm… 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
15/09/2009 kl. 14:46 #3skrev 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
15/09/2009 kl. 14:49 #4#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
15/09/2009 kl. 14:51 #5#3
En session ifm. websider varer fra du åbner din browser til du lukker den igen.Planter er fascinerende
15/09/2009 kl. 15:00 #6Ah 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.SelectedNodeChanged, 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
15/09/2009 kl. 15:54 #7ok 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
15/09/2009 kl. 16:43 #8Så 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
15/09/2009 kl. 17:25 #9#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
16/09/2009 kl. 08:43 #10Har 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
16/09/2009 kl. 08:48 #11ahhh 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!
16/09/2009 kl. 14:26 #12Du 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
16/09/2009 kl. 20:48 #13#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
16/09/2009 kl. 21:00 #14#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
16/09/2009 kl. 22:10 #15#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
- ForfatterKommentarer
- Du skal være logget ind for at kommentere på dette indlæg.
























