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

I den här postningen kommer jag kika på hur du gör din ListView uppdateringsbar samt hur du kan binda LinqDataSource mot andra objekt än DataContext-objekt. Den första delen av min serie bloggpostningar om de nya kontrollerna i ASP.NET 3.5, där jag gick igenom grunderna för LinqDataSource och ListView-kontrollerna, finns tillgänglig här.

Om du vill använda LinqDataSource grafiska gränssnitt för att binda mot något annat än de DataContext-objekt som skapas med LINQ to SQL krävs att du kryssar ur rutan 'Show only DataContext objects' när du skapar och konfigurerar din datakälla. Det kan t.ex. vara aktuellt om du vill kunna databinda mot en lista som du hämtar från ett affärslogik-lager i din lösning:

LINQDatasourceConfigureDatasource

I den första delen visade jag två av de mallar som finns tillgänliga för ListView-kontrollen: <LayoutTemplate> och <ItemTemplate>. Dessa styr vilka HTML-element som ska användas och är obligatoriska för att ListView-kontrollen över huvud taget ska kunna rendera data. Men det finns ett antal andra mallar tillgängliga för att styra t.ex. editeringsfunktioner, alternerande rader och vad som ska visas om det inte finns data - här är den kompletta listan:

  • LayoutTemplate - rot-mallen för kontrollens layout, innehåller 'Placeholder'-element som <tr>, <div> eller <span>. Dessa 'Placeholder'-element ersätts i runtime med det som definieras i 'ItemTemplate', 'EmptyDataTemplate' osv.
  • ItemTemplate - definierar repeterande element och hur dessa är databundna mot datakällor.
  • ItemSeparatorTemplate - avgör vad som ska renderas mellan repeterande element.
  • GroupTemplate - definierar layout för en gruppering av element. Innehåller 'Placeholder'-element som <tr>, <div> eller <span>. Dessa 'Placeholder'-element ersätts i runtime med det som definieras i 'ItemTemplate', 'EmptyDataTemplate' osv.
  • GroupSeparatorTemplate - avgör vad som ska renderas mellan två grupper av element.
  • EmptyItemTemplate - definierar vad som ska renderas om för tomma rader om en GroupTemplate används.
  • EmptyDataTemplate - avgör vad som ska renderas om datakällan inte returnerar något data.
  • SelectedItemTemplate - definierar vad som ska renderas om ett repeterande element har valts i gränssnittet.
  • AlternatingItemTemplate - ger möjlighet styra utseendet på varannat repeterande element för att göra det enklare att läsa (t.ex. varannan rad i en annan färg).
  • EditItemTemplate - definierar vad som ska renderas när ett repeterande element editeras (renderas istf ItemTemplate för detta element).
  • InsertItemTemplate - definierar vad som ska renderas när ett nytt element med data ska sparas (renderas istf ItemTemplate för detta element). Renderas antingen i början av listningen av repeterande element eller i slutet (detta går att styra genom att sätta attributet InsertItemPosition på ListView-kontrollen.

I den här filmen på MSDN TV visar jag hur du kan använda några av dessa mallar för att göra din ListView uppdateringsbar tillsammans med en LINQDataSource.