DevTrain Startseite Advanced Developers Conference vom 14.-15. Februar 2011  
  
  
SUCHEN:  
ARTIKEL ONLINE: 525   

Kategorien
.NET
Datenbanken
Web
XML

Allgemein
Camp
Foren
Events
Persönliche Einstellungen
Registrieren
Prämien Shop
Kontakt
Impressum
Über DevTrain

Autoren


   Autor: Hannes Preishuber Artikel Drucken
        
Codeless nested Master Detail mit Gridview und Datalist

Verschachtelte Listen Controls sind mit ASP.NET einfach zu verwirklichen. Es gibt auf DevTrain bereits einige Artikel dazu. Nun bin ich aber kein Freund von Source Code und nur "kein Code" ist guter Code. In diesem Sinne beschreibe ich dieses mal, wie man zwei oder mehrere Gridview Controls verschachtelt ohne eine Zeile Code zu schreiben. Alles wird per Deklaration erledigt.

Zunächst möchte ich einmal das Ergebnis vorstellen. Ein Gridview zeigt in der ersten Spalte den Bestellkopf. Die Details pro Bestellung werden rechts daneben nebeneinander dargestellt mittels eines Datalist Control.

Grundsätzlich wird ein Gridview verwendet das zusätzlich ein Templatefield erhält. In dieses Feld kommen drei Bausteine:

  • Ein Hidden Field das als Steuerquelle für die verschachtelten Daten dient
  • Eine Datalist die zur Anzeige der Daten dient
  • ein SQL Datasource mit einem Parameter für die Where Bedingung

Das Ganze sieht dann innerhalb des Templatefields des Gridviews so aus:

<ItemTemplate>
   <asp:HiddenField id="orderid" runat="server" Value='<%#eval("orderid") %>'/>
   <asp:DataList ID="DataList1" runat="server" DataKeyField="OrderID" DataSourceID="DSOrderDetails" RepeatDirection="Horizontal">
   <ItemTemplate>
     ProductID:
   <asp:Label ID="ProductIDLabel" runat="server" Text='<%# Eval("ProductID") %>'></asp:Label><br />
     UnitPrice:
   <asp:Label ID="UnitPriceLabel" runat="server" Text='<%# Eval("UnitPrice") %>'></asp:Label><br />
     Quantity:
   <asp:Label ID="QuantityLabel" runat="server" Text='<%# Eval("Quantity") %>'></asp:Label><br />
     Discount:
   <asp:Label ID="DiscountLabel" runat="server" Text='<%# Eval("Discount") %>'></asp:Label><br />
  <br />
</ItemTemplate>
</asp:DataList>
<asp:SqlDataSource ID="DSOrderDetails" runat="server" ConnectionString="<%$ ConnectionStrings:NorthwindConn %>"
            SelectCommand="SELECT [OrderID], [ProductID], [UnitPrice], [Quantity], [Discount] FROM [Order Details] WHERE ([OrderID] = @OrderID)">
  <SelectParameters>
             <asp:ControlParameter ControlID="orderid" Name="OrderID" PropertyName="Value"
                    Type="Int32" />
            </SelectParameters>
  </asp:SqlDataSource>
</ItemTemplate>

Nur wenn sich ein Control inherhalb des gleichen Templates befindet kann es vom DataSource Control als Controlparameter verwendet werden.

 


DevTrain Camp - Schneller zum .NET 3.5 Developer
 
Verwandte Artikel      Verlinkte Dokumente
    Keine verknüpften Dokumente
    Keine Links vorhanden

  Erfasst am: 17.10.2005
  Gültig bis: 15.01.2006
17 Ratings
Bewertung: 34,1%
schlecht    sehr gut  

 
© Copyright 2007 ppedv AG