ListView och LinqDataSource - nya kontroller i ASP.NET 3.5 (del 1)

Med Visual Studio 2008 introduceras flera riktigt stora nyheter för webbútvecklare:

  • Split-vy mellan designläge och kodläge, där designvyn är lånad från Microsofts senaste webbdesignverktyg Expression Web, vilket innebär fullt stöd för XHTML-standarder och Cascading Style Sheet.
  • Nya flikar för CSS-egenskaper och en 'CSS Style Manager' för att enkelt kunna skapa, modifiera och lägga på stilar, också den inlånad från Expression Web. Du får även full intellisense när du specificerar CSS-klasser i kodläge.
  • Designläge även för nästlade Master Pages. Om du tidigare har använt nästlade Master Pages har dessa inte kunnat visas i designvy men i och med VS 2008 är det nu möjligt.
  • Intellisense i Javascript (whooohaa!). Detta måste vara en av de absolut mest efterlängtade funktionerna för webbutvecklare som hanterar stora mängder javascript. Du får även möjlighet att länka mellan olika javascriptfiler, du kan beskriva dina funktioner i kommentarer som syns i Intellisense samt får en förenklad debuggning av Javascript.
  • Det har tillkommit ett antal nya ASP.NET-kontroller i form av en ListView för flexiblare kontroll av den genererade HTML-koden i tabeller och listor, LinqDataSource för att kunna databinda mot LINQ-datakällor, samt DataPager som hanterar paginering av ListView-kontrollen.

Det är de sistnämnda, de nya kontrollerna i ASP.NET 3.5, som jag kommer fokusera på under en serie bloggartiklar med tillhörande filmer.

Först på plan är ListView och LinqDataSource-kontrollerna.

LinqDataSouce används för att skapa en datakälla som du sedan kan binda dina gränssnittskontroller mot - på samma sätt som de tidigare DataSource-kontrollerna i ASP.NET (SQL/Object/XML/Access och SiteMap).

Som namnet antyder så kan LinqDataSouce användas för att hämta data från alla objektstrukturer som det går att ställa LINQ-frågor mot. En bra introduktion till LINQ (som står för Language Integrated Query) är de filmer som Johan Lindfors publicerat på sin blogg. Scott Guthrie har även skrivit en utmärkt serie med bloggartiklar om LINQ to SQL. LINQ to SQL är den variant av LINQ som används för att skapa mappningar mellan klasser i C# eller VB.NET och databasobjekt i SQL Server.

De objektstrukturer som kan användas med LINQ  är alla objekt som implementerar gränssnittet IEnumerable<T>, t.ex. generiska listor (List<T>) - eller objekt som implementerar gränssnittet IQueryable<T>, t.ex. de objekt som används i LINQ to SQL.

LINQDataSource-kontrollen hittar du under fliken 'Data' i din Toolbar i Visual Studio. Drag och släpp ner kontrollen i designvyn så får du upp en Smart Tag för att konfigurera datakällan. När du har valt ut vilket objekt du vill hämta data ifrån konfigurerar du vilken tabell och vilka fält du vill hämta data från samt eventuella filtreringar, grupperingar och sorteringar med hjälp av GroupBy, Where och OrderBy-flikarna.

'Where' uttrycket kan hämta parameter-värden från kontroller, cookies, fomulär, profildata, Querystring eller Sessionsvariabler:

LINQDSWhereExpression  

När datakällan är konfigurerad kan du välja att använda den nya ListView-kontrollen för att rita ut data i en tabell eller listning i din WebForm.

ListView återfinns också under 'Data'-fliken i din Toolbar. Du binder ListView-kontrollen mot den datakälla som du vill gå mot och kan sedan välja bland ett antal fördefinierade layouter för din lista/tabell. Du kan även konfigurera vyn exakt som du vill att den ska se ut genom att skapa egna <LayoutTemplate> respektive <ItemTemplate> - mallar som beskriver huvudstrukturen och repeterande element i din lista eller tabell.

Här skiljer sig ListView en hel del från den gamla GridView-kontrollen, den kontroll som kanske flitigast använts tidigare för att skapa tabeller och listvyer. Med ListView är du inte begränsad till HTML-tabeller för din layout utan kan använda i princip vilken HTML-kod som helst för att skapa din lista och istället låta CSS-klasser styra din layout.

I nedanstående film går jag igenom grunderna i LINQDataSource samt visar på layout-möjligheterna med ListView-kontrollen:

I nästa del kommer jag visa hur du kan använda LinqDataSource-kontrollen mot andra objekt än de DataContext-objekt som skapas med LINQ to SQL (t.ex. om du vill kunna databinda mot en lista som du hämtar från ett affärslogik-lager i din lösning) samt hur du gör din ListView uppdateringsbar.