02. december 2008 - 18:51Der er
16 kommentarer og 1 løsning
RadioButtonList og OnSelectedIndexChanged
Jeg har en radiobuttonlist som jeg vil have sat efter hvad der står i databasen. F.eks. hvis databasekaldet returnerer "3" så skal RadioButtonListens Item med 3 i være valgt.
Når man så vælger et andet item skal der laves et nyt kald til databasen hvor den gemmer værdien fra det item.
Men jeg har det problem at den ikke vil hente værdien fra item'et, men istedet vælger det værdi som blev sat i page_load. Forvirrende forklaring, men koden kommer her:
Ovenstående kode virker ikke. F.eks. hvis jeg vælger 2 første gang så kan jeg aldrig skifte den igen.. Det er ligesom at den redirecter før den når at gemme noget i sessionen. Hvad er det jeg gør forkert her?
I mit rigtige projekt har jeg et databasekald istedetfor en session, men alt andet er identisk og har også samme problem (kan dog ikke få fat i koden nu)
Jeg henter en værdi fra databasen, men da jeg hverken kan få fat i koden eller databasen herfra bruger jeg bare et session objekt som erstatning..
Problemet er at siden skal ved hvert postback hente nyeste værdi fra databasen og vise dette på siden.. Dvs jeg må kalde databasen (i dette tilfælde sessionen) ved hvert postback for at få fat i nyeste værdi..
Hvis jeg bruger (!IsPostBack) gør det ikke at jeg kun får den nyeste værdi kun første gang og derefter henter den ikke fra databasen igen?
Det første du skal sikre dig er at du lytter på det rigtige event på din dropdownbox.. det må være OnSelectedIndexChange eller lignende.
Det er så herinde at du evt. kan opdatere din database først.. og bagefter trække en ny værdi ud værdi fra databasen.
Dit page load bliver afviklet før dit event.. dvs. hvis du henter en værdi fra databasen og ændre det valgte i dropdownboxen så vil det være et forkert element der er valgt når eventet bliver afviklet.
sorry, men kan du skrive i steps hvad der forventer/vil have der sker? jeg har forstået det sådan her.
1. Når siden loades kaldes databasen og ud fra den vælger man en position i rblRating 2. Brugeren foretager en ændring i rblRating og der laves et postback 3. Her afvikles OnSelectedIndexChanged eventet og databasen opdateres ud fra det valgte i dropdownbox'en.
1. Siden loades og der laves et tjek i databasen om en post (med værdi mellem 1 og 5). Hvis denne post er i DB, sættes den RadioButton i rblRating som svarer til posten i DB til SELECTED 2. Hvis der foretages en ændring i rblRating skal denne ændres. I så fald der ikke allerede findes en post i DB kaldes en Store() function som oprettet en post i DB og hvis der allerede findes en post skal denne bare ændres og så kaldes en Update() function.
Eksempel:
Jeg åbner siden for første gang (dvs der ikke er oprettet en post i forvejen). Ingen RadioButton er sat i rblRating. Nu trykker jeg på "4". Der gemmes en post med "4" i DB og siden reloades. Nu sættes rblRa
Nu sættes rblRating.SelectedValue = DB.GetValue() (4). Nu trykker jeg så på "3" bagefter. Værdien i DB opdateres med "3" og siden reloades og igen sættes rblRating.SelectedValue = D.GetValue() (3).
protected void Page_Load(object sender, EventArgs e) { if(!IsPostBack) { //Tjek om den findes i databasen. hvis ja.. sæt index på din dropdownbox. } } protected void RadioButtonList1_SelectedIndexChanged(object sender, EventArgs e) { //tjek om den findes i databasen.. hvis ja.. updater.. hvis ikke opret den }
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.