tisdag, oktober 05, 2010

Videoföreläsningar, gratis, på internet!

Min senaste hobby är att titta på intressanta videoföreläsningar. Jag blev helt paff när jag upptäckte hur mycket det finns egentligen, hade aldrig kunnat gissa.

Perfekt att slå på istället för att se nå dokusåpa eller annat hjärndött. Här är några tips, och det går att klicka sig vidare för att leta reda på massor mer.

http://academicearth.org/courses/programming-paradigms
http://academicearth.org/courses/building-dynamic-websites
http://freevideolectures.com/Course/2517/Multicore-Programming-Primer
http://www.youtube.com/user/UNSWelearning#p/c/6B940F08B9773B9F/0/hE7l6Adoiiw

Richard Buckland (sista länken) var för övrigt en strålande duktig föreläsare, tänk om man hade haft såna lärare själv!

torsdag, augusti 26, 2010

Repeaters pt. 2

Jo, jag kom på en till sak som man ofta ser mycket felaktig information om. Nämligen att det går inte att hämta värden ur repeaters.

Till exempel, man har en repeater med en textbox. Du säger id="foo", och repeatern rasslar till och du har 20st foo. Givetvis kan du då inte i code-behind köra på som vanligt.

Knepet är att använda sig utav FindControl.

for(int i = 0; i < repeater.Items.Count; i++)
{
TextBox tb = repeater.Items[i].FindControl("foo");
string foobar = tb.Text + i;

Där har du då din textboxkontroll samt nummer på repeatern den kom ifrån. Mycket enkelt. Går att tillämpa på alla möjliga slags kontrollers, checkboxar etc.

onsdag, augusti 25, 2010

Repeaters

Det står mycket blaj om repeaters (asp) på nätet alltså, folk har verkligen ingen koll.

För det första så finns det ingen anledning att köra Eval() när man kan casta direkt till objektet man bindat mot. Varför svänga förbi eval som dessutom använder sig utav reflection (kostsamt) när man kan använda objektet rakt av? Begriper inte det.

<%# Server.HtmlEncode(((verifiable)Container.DataItem).display) %>

Lätt som en plätt.
En annan sak folk inte verkar fatta är att man kan ha nested repeaters. En repeater inuti en repeater alltså. Så om man har en lista, med en klass, och klassen innehåller en annan lista. 

Så är det bara peka datasource mot listan i den djupare nivån!

asp:Repeater ID="rptInv" runat="server" DataSource="<%# ((verifiable)Container.DataItem).comp %>"
Lätt som en plätt!

Till sist, så kan man i den djupare repeatern komma åt saker i den övre, parent repeatern. Verkar som att ingen fattat det heller, och gör märkliga lösningar med literals och diverse fulhack. Men varför krångla till det, när man kan använda sig utav .Parent. 

<%# ((verifiable)((RepeaterItem)Container.Parent.Parent).DataItem).id%> 

Inget mystiskt där heller. Förutom att du får en RepeaterItem genom Parent, inte själva objektet.

Det var allt för denhär gången.