16. februar 2007 - 14:42
Der er
15 kommentarer og 2 løsninger
Hente parametere fra forrige side i ASP.net 2.0
Er der ikke noget med at man på en nem måde kan hente parameter fra en forgånede side i ASP.net 2.0? Jge har en lang liste af checkbox's der er genereret ved hjælp af en repeater, hvordan får jeg nemmest fat i hvilket checkbox's der er hakket af fra den forgående side.
Annonceindlæg fra Computerworld it-jobbank
16. februar 2007 - 14:48
#1
Dem som er checked er vel også kun dem som kommer med i din querystring. Så Request.QueryString.GetValues("checkboxnavn"); returnere en liste med.
16. februar 2007 - 14:58
#2
Jeg aner jo ikke hvad de hedder, de er jo publiceret ved hjælp af en repeater
16. februar 2007 - 15:10
#3
så du tror at man ud fra en tekst streng kan få .NET til at finde ud af hvad der hører til hvad? :) jeg tror .NET er for dum til det. Det du kan gøre er at give alle checkbox samme id, men hver sit navn (ellers er det omvendt) så kan du requeste dem alle ud fra en enkelt betegnelse. men lytter gerne med.. er da rimelig sejt hvis .NET kan det andet og så lære jeg også noget nyt som jeg helt sikkert kan bruge:)
16. februar 2007 - 15:14
#4
ja har lige testet.. <input type="checkbox" name="raekkeet" id="aksdas" value="checkbox"> <input type="checkbox" name="raekkeet" id="g4fes" value="checkbox"> <input type="checkbox" name="raekkeet" id="dhuukui" value="checkbox"> <input type="checkbox" name="raekkeet" id="gdfgdf" value="checkbox"> de har forskellige id'er så man kan godt skelne mellem dem. og så kan jeg requeste dem via. Request.QueryString.GetValues("raekkeet"); hvilket returnere et array med dem som er checked.
16. februar 2007 - 16:55
#5
Måske tænker du på, at man kan poste til en anden side - og fra den anden side har adgang til den side der er postet fra. Hvis du har en side 1.aspx her: (læg mærke til PostBackUrl på knappen) <asp:Repeater ID="rep" runat="server"> <ItemTemplate> <asp:CheckBox ID="chk" runat="server" /> </ItemTemplate> </asp:Repeater> <br /> <asp:Button ID="Button2" runat="server" PostBackUrl="2.aspx" Text="Button" /></div> Og så noget kode på 2.aspx.cs Repeater rep = this.PreviousPage.FindControl("rep") as Repeater; foreach (RepeaterItem item in rep.Items) { CheckBox chk = item.FindControl("chk") as CheckBox; } ... Der er masser af muligheder for at gøre den slags lidt lækrere - bare sig til ;o) Er det sådan noget du gerne vil? Mvh
19. februar 2007 - 07:56
#6
Det er lige præcis noget ala det jeg vil frem til :-) Der er bare en lille detalje, den næste side skal vare et nyt vindue. Hvordan håndtere jeg det?
19. februar 2007 - 08:45
#7
det kan sikkert gøres anderledes, men hvis du tilføjer lidt javascript.. f.eks denne funktion. function Open(url) { window.open(url) } og på knappen laver <asp:Button ID="Button2" runat="server" PostBackUrl="2.aspx" onClick="2.aspx.cs" Text="Button" /> men har ikke testet.. du kan om ikke andet afprøve om det kan benyttes.
19. februar 2007 - 10:21
#8
snepnet: Når jeg afvikler noget ala det du har skrevet kan jeg ikke får fat i repateren fra den forgående side :-(
19. februar 2007 - 10:40
#9
Jeg kan godt se værdierne når jeg debugger men jeg kan ikke finde dem med FindControl.
19. februar 2007 - 11:15
#10
Kan det have noget at gøre med at jeg bruger MasterPage?
19. februar 2007 - 23:08
#11
Ja det har det beklageligvis ... Du må prøve en: Repeater rep = this.PreviousPage.Master.FindControl("navn").FindControl("rep") as Repeater; "navn" skal du så udskifte på navnet på den contentplaceholder du har din repeater liggende i. Mvh
20. februar 2007 - 08:48
#12
Super mange tak for hjælpen :) Den med det ny vindue blev håndteret på følgende måde: <asp:Button ID="Button1" Text="Næste" style="float:right" OnClientClick="window.document.forms[0].target='newwindowhere';" PostBackUrl="~/admin/nytvindue.aspx" runat="server" /> Snepnet: Lige et hurtigt spørgsmål, Jeg kan se at du skriver "item.FindControl("chk") as CheckBox;" er det pænere end at skrive "(CheckBox)item.FindControl("chk")"? Smid svar så kaster jeg med point ;~}
20. februar 2007 - 09:16
#13
"(CheckBox)item.FindControl("chk")"? smider en exception hvis det ikke kan castes.. og din hjemmeside fejler. item.FindControl("chk") as CheckBox;" returnere null hvis den ikke kan castes og dit program crasher ikke. mvh Qawi
20. februar 2007 - 09:19
#14
Du kan faktisk lave et smart check så du sikre dig det ikke crasher.. if(Control is CheckBox) { CheckBox checkbox = control as CheckBox; // og din kode her }
20. februar 2007 - 22:40
#15
Ja jeg synes normalt det er at foretrække - og den vil normalt gå hånd i hånd med en forespørgsel på null: SomeType obj = someObj as SomeType; if(obj != null) { // du er her garanteret en gyldig SomeType reference } Mvh
21. februar 2007 - 06:08
#16
Tusind tak for hjælpen alle sammen :) Jeg har lige forhøjet pointene så gawi smid et svar så får du de 15 point for din ivrige indstas!
21. februar 2007 - 09:39
#17
Det er ellers okay:) ps. det her item.FindControl("chk") as CheckBox if(Control is CheckBox) { giver samme resultat som det her item.FindControl("chk") as CheckBox if(obj != null) { det er måske bare lidt mere læsevenligt med "is"
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.