Amos Skrevet 19. januar 2008 Del Skrevet 19. januar 2008 Jeg har et par checkboxer som er plassert i en PlaceHolder avhengig av hva brukeren velger i steget før. Det jeg ønsker å gjøre videre er å sende brukeren videre til en ny side. Hvilke side dette blir avhenger av hvilken av de to checkboxene som velges. Jeg strever med å få hentet ut hvilken av disse checkboxene som er trykket og derfra brukt Response.Redirect for å sende brukeren til ny side. Jeg regner med at jeg trenger en ny "event-metode" ala checkbox_changed(object s, EventArgs e), men jeg klarer ikke å få fatt i resultatet som sendes fra metoden som vises i koden under. Noen som kan komme med tips? public void createCheckboxes() { CheckBox cb1 = new CheckBox(); cb1.ID = "cb1_id"; cb1.AutoPostBack = true; cb1.BorderColor = System.Drawing.ColorTranslator.FromHtml("#a8c0f6"); cb1.BackColor = System.Drawing.ColorTranslator.FromHtml("#a8c0f6"); cb1.ForeColor = System.Drawing.Color.Black; cb1.Text = "Specify individual booking times for each resource"; CheckBox cb2 = new CheckBox(); cb2.ID = "cb2_id"; cb2.AutoPostBack = true; cb2.BorderColor = System.Drawing.ColorTranslator.FromHtml("#a8c0f6"); cb2.BackColor = System.Drawing.ColorTranslator.FromHtml("#a8c0f6"); cb2.ForeColor = System.Drawing.Color.Black; cb2.Text = "Check available booking times for the selected service"; PlaceHolderChkBoxAlt.Controls.Add(cb1); PlaceHolderChkBoxAlt.Controls.Add(new LiteralControl("<br>")); PlaceHolderChkBoxAlt.Controls.Add(cb2); } Lenke til kommentar
Manfred Skrevet 20. januar 2008 Del Skrevet 20. januar 2008 (endret) Skal bare en av de checkes, og i det dette skjer skal man sendes videre til neste side? Da kan du vel gjøre, som du sier, å bruke chekBox.CheckChanged eller hva den heter, og så definere funksjonen checkChange(object sender, EventArgs e) eller noe slikt, og så legger til denne funksjonen som event på de begge. i funksjonen bruker du da: switch( (sender as CheckBox).ID ) { case "cb1_id": //ettellerannet break; case "cb2_id": //noe annet break; } ...for eksempel... Endret 20. januar 2008 av Manfred Lenke til kommentar
Amos Skrevet 21. januar 2008 Forfatter Del Skrevet 21. januar 2008 Takk for svaret Manfred! Jeg får det imidlertid ikke til å virke som jeg ønsker. Når jeg velger checkbox, så blir ikke brukeren transportert til ny side, men skjermen oppdateres uten at noe synlig skjer på en måte. Her er koden jeg bruker: public void createCheckboxes() { CheckBox cb1 = new CheckBox(); cb1.ID = "cb1_id"; CheckBox cb2 = new CheckBox(); cb2.ID = "cb2_id"; cb1.BorderColor = System.Drawing.ColorTranslator.FromHtml("#a8c0f6"); cb1.BackColor = System.Drawing.ColorTranslator.FromHtml("#a8c0f6"); cb1.ForeColor = System.Drawing.Color.Black; cb1.Text = "You are being sent to a new page_1"; cb1.AutoPostBack = true; cb1.CheckedChanged += new EventHandler(cb_CheckedChanged); cb2.BorderColor = System.Drawing.ColorTranslator.FromHtml("#a8c0f6"); cb2.BackColor = System.Drawing.ColorTranslator.FromHtml("#a8c0f6"); cb2.ForeColor = System.Drawing.Color.Black; cb2.Text = "You are being sent to a new page_2"; cb2.AutoPostBack = true; cb2.CheckedChanged += new EventHandler(cb_CheckedChanged); PlaceHolderChkBoxAlt.Controls.Add(cb1); PlaceHolderChkBoxAlt.Controls.Add(new LiteralControl("<br>")); PlaceHolderChkBoxAlt.Controls.Add(cb2); } Funksjonen som definerer hva som skal skje er her: protected void cb_CheckedChanged(Object s, EventArgs e) { switch ((s as CheckBox).ID) { case "cb1_id": Response.Redirect("SpecifyNewTime.aspx"); break; case "cb2_id": Response.Redirect("BookService.aspx"); break; } } Noen som ser hva jeg gjør feil? Skal bare en av de checkes, og i det dette skjer skal man sendes videre til neste side? Da kan du vel gjøre, som du sier, å bruke chekBox.CheckChanged eller hva den heter, og så definere funksjonen checkChange(object sender, EventArgs e) eller noe slikt, og så legger til denne funksjonen som event på de begge. i funksjonen bruker du da: switch( (sender as CheckBox).ID ) { case "cb1_id": //ettellerannet break; case "cb2_id": //noe annet break; } ...for eksempel... Lenke til kommentar
Manfred Skrevet 21. januar 2008 Del Skrevet 21. januar 2008 Tipper problemet ligger i at de blir addet på nytt for hver gang, og derfor er ingen av de checket. Mulig du kan løse noe av det ved å sette EnableViewState = true på PlaceHolderen eller noe. Lenke til kommentar
serverside Skrevet 21. januar 2008 Del Skrevet 21. januar 2008 Dette har nok med viewstate å gjøre. Et eller annet sted kaller du din createCheckboxes() metode (trolig i Page_Load). Sørg for at det ike gjøres dersom det er en postback (if (!Page.IsPostBack) { createCheckboxes(); }) Men uansett, det er ingen vits å generere disse kontrollene code-behind. Da blir ting langt mer komplisert enn det trenger å være. Du er inn på noe, placeholdere er en bra løsning, men et tips er nok å skjule/vise placeholdere etter hva som er valgt, ikke generere kontroller etter hva som er valgt. Dette er langt enklere. Lenke til kommentar
Amos Skrevet 22. januar 2008 Forfatter Del Skrevet 22. januar 2008 Jeg sjekket ViewState på Placeholderen og den var satt til true. Men serverside, hvis jeg ikke bruker codebehind på checkboxene vil de vel vises på siden hele tiden og ikke dukke opp avhengig av hva brukeren gjør forut? Eller misforstår jeg dette? Kan du vise med et eksempel hvordan jeg kan skjule/vise vha. PlaceHolder? Lenke til kommentar
Manfred Skrevet 22. januar 2008 Del Skrevet 22. januar 2008 placeHolder1.Visible = false? Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå