Jag hämtar data och binder den till en kontroll med en datareader: Hej. Wanbergs method är helt klart bäst. Gladh: Exakt så som du säger måste jag göra nu. Ändra saker som inte går att göra i SQL-frågan... Hittade denna artikeln nu:datareader
meddelanden.DataSource = myReader;
meddelanden.DataBind();
meddelanden är en repeater
En av kolumnerna i dbn heter Xgammal.
Skulle vilja att alla 0-värden i denna kolumnen byts ut mot "" och alla 1-värden mot "läst" - detta innan datan binds till kontrollen. Så istället för:
03-07-08 Nytt meddelande 1
03-09-08 Nästa meddelande 1
vill jag ha
03-07-08 Nytt meddelande läst
03-09-08 Nästa meddelande läst
Hur fixar man detta? Vill inte överge min Repeater heller och köra en vanlig loop .Sv: datareader
Case sats i databas anropet.
<code>select Datum, Nyhet, Case Xgammal when 1 then 'Läst' when 0 then 'Oläst'end as Läst from Nyhet</code>
Då får du det direkt in i din reader.
//WänbergSv: datareader
Det kan dock komma situationer när man inte klara av det med att ändra i SQL satsen, och då finns det ett event på din repeater som heter: ItemDataBound
Det betyder att innan din data binds till din repeater så kommer den gå igenom en funktion och att du i denna funktion gör det du behöver.
I ditt fall så skulle du alltså i denna funktin kollat om värdet varit 0/1 och så fall skrivit ut ""/"läst" i din repeater.
Läs på mer om ItemDataBound som event på din repeater så upptäcker du ett kraftfullt och användbart event.
- MSv: datareader
Tycker dock att ItemDataBound verkar knepigt. Jag titta på följande sida http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwebuiwebcontrolsrepeaterclassitemdataboundtopic.asp (finns det någon bättre om detta ämne, kanske?) men lyckas inte efterlikna det.
Jag använder en databas. Måste jag loopa igenom alla mina poster för att lägga in dem i objektet Evaluation (på MS sida)? För i så fall kan jag ju lika gärna skippa repeatern...
Sedan undrar jag vad som egentligen görs där...
De kör flera rader i stil med: values.Add(new Evaluation("Razor Wiper Blades", "Good"));
Innebär inte detta att ett nytt objek skapas för varje post i databasen?
Hur lyckas i så fall asp.net hitta "rätt" klass sedan nr värden ska jämföras:
if (((Evaluation)e.Item.DataItem).Rating == "Good")
om flera olika skapats?
Jag skulle uppskatta om någon kunde svara på mina frågor och kanske skulle kunna skriva ihop lite pesudo-kod för att göra samma sak med en databas.
Tack.Sv: datareader
http://authors.aspalliance.com/stevesmith/articles/dotnethidedatabounditem.asp
Den verkar betydligt bättre än MS men jag återkommer om jag stöter på några problem.