ASP.NET: Datenbindung ? Übersicht

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 307860 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Dieser Artikel wurde zuvor veröffentlicht unter D307860
Dieser Artikel bezieht sich auf die folgenden Namespaces für Microsoft .NET Framework-Klassenbibliotheken:
  • System.Data
  • System.Data.SqlClient
Alles erweitern | Alles schließen

Auf dieser Seite

Zusammenfassung

Dieser Artikel enthält eine Einführung in die ASP.NET-Datenbindung.

Weitere Übersichten zu ASP.NET-Funktionen und -Features finden Sie in folgendem Artikel der Microsoft Knowledge Base:
305140 Überblick über ASP.NET

Weitere Informationen

Mit ASP.NET-Datenbindung können Sie ein beliebiges Serversteuerelement an einfache Eigenschaften, Auflistungen, Ausdrücke und/oder Methoden zu binden. Datenbindung bietet erhöhte Flexibilität bei der Nutzung von Daten aus einer Datenbank oder anderen Quelle.

Dieser Artikel behandelt die folgenden Aspekte der Datenbindung:

Datenbindung: Grundlagen

<%# %> Syntax

ASP.NET führt eine neue deklarative Syntax ein: <%# %>. Diese Syntax ist die Basis für die Verwendung der Datenbindung in einer .aspx-Seite. Alle Datenbindungsausdrücke müssen innerhalb dieser Zeichen stehen. Die folgenden Beispiele zeigen die einfache Datenbindung aus mehreren Quellen:
  • Einfache Eigenschaft (Syntax für einen Kunden):
    <%# custID %>
    					
  • Collection (syntax for an order):
    <asp:ListBox id="List1" datasource='<%# myArray %>' runat="server">
    					
  • Ausdruck (Syntax Für einen Kontakt):
    <%# ( customer.First Name + " " + customer.LastName ) %>
    					
  • Methodenergebnis (Syntax für einen offenstehenden Betrag):
    <%# GetBalance(custID) %>
    					
In diesen Beispielen zeigen die Inline-Tags <%# %> an, wo die Informationen aus einer bestimmten Datenquelle in der .aspx-Seite eingefügt werden sollen. Im folgenden Datenbindungsbeispiel wird ein TextBox-Webserversteuerelement verwendet:
<asp:textbox id=txt text="<%# custID %>" runat=server />
				
Weitere Informationen zur Datenbindungssyntax finden Sie in der folgenden Dokumentation zum .NET Framework Software Development Kit (SDK):
Ausdruckssyntax der Datenbindung
http://msdn2.microsoft.com/de-de/library/bda9bbfx(vs.71).aspx

Page.DataBind() im Vergleich zu Control.DataBind()

Nachdem die jeweiligen Datenquellen ermittelt und für die Objekte auf der ASPX-Seite festgelegt worden sind, müssen die Daten an diese Datenquellen gebunden werden. Sie können die Daten mithilfe der Methode Page.DataBind oder Control.DataBind an die Datenquellen binden.

Die beiden Methoden funktionieren in ähnlicher Weise. Der Hauptunterschied besteht darin, dass alle Datenquellen nach dem Aufruf der Methode Page.DataBind an ihre Serversteuerelemente gebunden werden. Es werden keine Daten an das Steuerelement übergeben, bis Sie ausdrücklich entweder die Methode DataBind des Webserversteuerelements oder die Methode Page.DataBind auf Seitenebene aufrufen. Page.DataBind (oder DataBind) wird meist aus dem Ereignis Page_Load aufgerufen.

Weitere Informationen über die Methode DataBind finden Sie in der folgenden Dokumentation zum .NET Framework Software Development Kit (SDK): Methode "Control.DataBind"
http://msdn.microsoft.com/de-de/library/w5e5992d.aspx

An Daten gebundene Listensteuerelemente

Listensteuerelemente sind spezielle Webserversteuerelemente, die an Auflistungen gebunden werden können.. Mit Listensteuerelementen können Sie Datenreihen in einem von Ihnen definierten Vorlagenformat Form anzeigen lassen. Allen Listensteuerelementen sind die Eigenschaften DataSource und DataMember zugeordnet, die für die Bindung an Auflistungen verwendet werden.

Diese Steuerelemente können ihre Eigenschaft DataSource an jede Auflistung binden, die die Schnittstellen IEnumerable, ICollection oder IListSource unterstützt.

Repeater-Steuerelement

Dieses Steuerelement ist eine an Daten gebundene Liste mit Vorlage. Das Repeater-Steuerelement hat kein bestimmtes Erscheinungsbild, d.h. kein integriertes Layout oder Format. Daher müssen also das HTML-Layout, die Formatierung und die Formattags in den Vorlagen des Steuerelements explizit deklariert werden.

Die folgenden Codebeispiele zeigen, wie Sie mit einem Listensteuerelement, demRepeater-Steuerelement, Daten anzeigen können:

HINWEIS: Sie müssen die Parameter der Verbindungszeichenfolge nach Bedarf für Ihre Umgebung ändern.

Visual Basic .NET
<%@ Page Language="vb" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>

<script runat="server">
Sub Page_Load(sender As Object, e As EventArgs)

   Dim cnn As SqlConnection = New SqlConnection("server=(local);" & _
                                                "database=pubs;Integrated Security=SSPI")
   Dim cmd As SqlDataAdapter = New SqlDataAdapter("select * from authors", cnn)
   Dim ds As DataSet = New DataSet()
   cmd.Fill(ds)
   Repeater1.DataSource = ds
   Repeater1.DataBind()

End Sub
</script>
<html>
<body>
   <form id="Form1" method="post" runat="server">
      <asp:Repeater id="Repeater1" runat="server">
         <ItemTemplate>
         <%# DataBinder.Eval(Container.DataItem,"au_id") %><br>
	 </ItemTemplate>
      </asp:Repeater>
   </form>
</body>
</html>
				
Visual C# .NET
<%@ Page language="c#" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>

<script runat="server">
void Page_Load(Object sender, EventArgs e) 
{ 
   SqlConnection cnn = new 
       SqlConnection("server=(local);database=pubs;Integrated Security=SSPI"); 
   SqlDataAdapter da = new SqlDataAdapter("select * from authors", cnn); 
   DataSet ds = new DataSet(); 
   da.Fill(ds, "authors"); 
   Repeater1.DataSource = ds.Tables["authors"];
   Repeater1.DataBind();
}
</script>
<html>
<body>
   <form id="WebForm2" method="post" runat="server">
      <asp:Repeater id="Repeater1" runat="server">
         <ItemTemplate>
         <%# DataBinder.Eval(Container.DataItem,"au_id") %><br>
    	 </ItemTemplate>
      </asp:Repeater>
   </form>
</body>
</html>
				
Visual J# .NET
<%@ Page language="VJ#" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>

 <script runat="server">
void Page_Load(Object sender, EventArgs e) 
{ 
    SqlConnection cnn = new SqlConnection("server=(local);database=pubs;Integrated
         Security=SSPI"); 
    SqlDataAdapter da = new SqlDataAdapter("select * from authors", cnn); 
    DataSet ds = new DataSet(); 
    da.Fill(ds, "authors"); 
    DataTableCollection dtc = ds.get_Tables();
    int index = dtc.IndexOf("authors");
    Repeater1.set_DataSource(dtc.get_Item(index));
    Repeater1.DataBind();
}
</script>
<html>
<body>
   <form id="WebForm2" method="post" runat="server">
      <asp:Repeater id="Repeater1" runat="server">
         <ItemTemplate>
         <%# DataBinder.Eval(Container.DataItem,"au_id") %><br>
             </ItemTemplate>
      </asp:Repeater>
   </form>
</body>
</html>
				
Weitere Informationen über das Repeater-Steuerelement finden Sie in der folgenden Dokumentation zum .NET Framework Software Development Kit (SDK):
Repeater-Webserversteuerelement
http://msdn.microsoft.com/de-de/library/x8f2zez5.aspx

DataList-Steuerelement

Das DataList-Steuerelement ist eine an Daten gebundene Liste mit Vorlage und vielen Funktionen. Sie können diese Vorlagen ändern, um dieses Steuerelement individuell anzupassen. Anders als das Repeater-Steuerelement unterstützt DataList die direktionale Darstellung, optional auch die Darstellung innerhalb einer HTML-Tabelle zur Laufzeit.

Weitere Informationen über das DataList-Steuerelement finden Sie in der folgenden Dokumentation zum .NET Framework Software Development Kit (SDK):
DataList-Webserversteuerelement
http://msdn.microsoft.com/de-de/library/9cx2f3ks(VS.85).aspx

DataGrid-Steuerelement

Das DataGrid-Steuerelement ist eine an Daten gebundene Liste mit mehreren Spalten und großem Funktionsumfang. Zum individuellen Anpassen des Layouts einzelner Spalten im DataGrid können Sie den Spaltentyp auf "templated" (mit Vorlage) setzen und die Vorlagen der Spalte bearbeiten. Beim Steuerelement DataGrid kann die Darstellung ohne Vorlage stattfinden; es ist also ideal für Berichterstellungsszenarien. DataGrid unterstützt auch Selektion, Bearbeitung, Löschen, Paging und Sortieren nach Spalten und Schaltflächenspalten.

Weitere Informationen über das DataGrid-Steuerelement finden Sie in der folgenden Dokumentation zum .NET Framework Software Development Kit (SDK):
DataGrid-Webserversteuerelement
http://msdn.microsoft.com/de-de/library/aa710742(VS.71).aspx

Datenzugriff

In diesem Abschnitt wird beschrieben, wie Sie auf Daten einer Datenbank zugreifen und die Daten an Listensteuerelemente binden. Zum Abrufen der Daten aus einer Datenbank können Sie die Klassen DataSet oder DataReader verwenden.

DataSet-Klasse

Ein Dataset enthält eine vollständige Darstellung der Daten einschließlich der Tabellenstruktur, der Beziehungen zwischen den Tabellen und der Reihenfolge der Daten. DataSet-Klassen sind so flexibel, dass beliebige Informationen gespeichert werden können, von Datenbankdateien bis zu XML-Dateien (XML = Extensible Markup Language). DataSet-Klassen sind statusfrei, d. h. sie können vom Client an den Server übergeben werden, ohne dass Serververbindungsressourcen belegt werden. Der folgende Code zeigt die Verwendung von DataSet zum Binden von Daten an ein Steuerelement:

HINWEIS: Sie müssen die Parameter der Verbindungszeichenfolge nach Bedarf für Ihre Umgebung ändern.

Visual Basic .NET
Dim cnn As SqlConnection = New SqlConnection("server=(local);" & _
                                             "database=pubs;Integrated Security=SSPI")
Dim cmd As SqlDataAdapter = New SqlDataAdapter("select * from authors", cnn)
Dim ds As DataSet = New DataSet()
cmd.Fill(ds)
MyRepeater.DataSource = ds
MyRepeater.DataBind() 
				
Visual C# .NET
SqlConnection cnn = new SqlConnection("server=(local);
                                       database=pubs;Integrated Security=SSPI"); 
SqlDataAdapter da = new SqlDataAdapter("select * from authors", cnn); 
DataSet ds = new DataSet(); 
da.Fill(ds);
MyRepeater.DataSource = ds;
MyRepeater.DataBind(); 
				
Visual J# .NET
SqlConnection cnn = new SqlConnection("server=(local);
                                       database=pubs;Integrated Security=SSPI"); 
SqlDataAdapter da = new SqlDataAdapter("select * from authors", cnn); 
DataSet ds = new DataSet(); 
da.Fill(ds); 
MyRepeater.set_DataSource(ds);
MyRepeater.DataBind();
				
Weitere Informationen über dieDataSet-Klasse finden Sie in der folgenden Dokumentation zum .NET Framework Software Development Kit (SDK):
Klasse "DataSet"
http://msdn2.microsoft.com/de-de/library/system.data.dataset(vs.71).aspx

DataReader-Klasse

Wenn Sie umgekehrt die darzustellenden Daten nur anzeigen (und nicht ändern) müssen, ist eine DataReader-Klasse möglicherweise die bessere Lösung. Es ist beispielsweise besser, eine DataReader-Klasse für ein DropDownList-Steuerelement zu verwenden, da es sich um einen vorwärts gerichteten Datenleser handelt. Der folgende Code zeigt die Verwendung einer SqlDataReader-Klasse zum Binden von Daten an ein Steuerelement:

Visual Basic .NET
Dim cnn As SqlConnection = New SqlConnection("server=(local);" & _
                                             "database=pubs;Integrated Security=SSPI")
Dim cmd As SqlCommand = New SqlCommand("select * from authors", cnn)

cnn.Open()
MyRepeater.DataSource = cmd.ExecuteReader(CommandBehavior.CloseConnection)
MyRepeater.DataBind()
				
Visual C# .NET
SqlConnection cnn = new SqlConnection("server=(local);
                                       database=pubs;Integrated Security=SSPI");
SqlCommand cmd = new SqlCommand("select * from authors", cnn);

cnn.Open();
MyRepeater.DataSource = cmd.ExecuteReader(CommandBehavior.CloseConnection);
MyRepeater.DataBind();
				
Visual J# .NET
SqlConnection cnn = new SqlConnection("server=(local);
                                       database=pubs;Integrated Security=SSPI"); 

SqlCommand cmd = new SqlCommand("select * from authors", cnn); 

cnn.Open();
MyRepeater.set_DataSource(cmd.ExecuteReader(CommandBehavior.CloseConnection));
MyRepeater.DataBind();
				
Weitere Informationen zur Klasse SqlDataReader und Datenzugriff mit ASP.NET finden Sie unter folgenden Themen in der Dokumention zum .NET Framework SDK:
SqlDataReader-Klasse
http://msdn.microsoft.com/de-de/library/system.data.sqlclient.sqldatareader.aspx

Entwickeln von ASP.NET-Hochleistungsanwendungen
http://msdn2.microsoft.com/de-de/library/5dws599a(vs.71).aspx

Bindung in Listensteuerelementvorlagen

Sie können Vorlagen in Listensteuerelementen verwenden, um einzelne Datensätze einer Datenquelle zu binden und individuell anzupassen. Dieser Abschnitt beschreibt drei Methoden dafür.

DataBinder.Eval-Methode

Wenn die Datenquelle mit Daten arbeitet, die von einer Datenbank zurückgegeben werden, kann die Datenquelle zahlreiche Informationen enthalten. Mit der generischen Methode DataBinder.Eval können Sie Daten zurückgeben. Im folgenden Codebeispiel wird das Feld "au_id" von der Datenquelle des Containerobjekts zurückgegeben.
<%# DataBinder.Eval(Container.DataItem,"au_id") %>
				
Weitere Informationen über die Methode DataBinder.Eval finden Sie in der folgenden Dokumentation zum .NET Framework Software Development Kit (SDK):
Methode "DataBinder.Eval"
http://msdn.microsoft.com/ede-de/library/4hx47hfe.aspx

Explizite Umwandlung

Wenn Sie eine genauere Steuerung benötigen, verwenden Sie die explizite Umwandlung. Bei einer expliziten Umwandlung wird ein Typkonvertierungs-Schlüsselwort verwendet. Diese Schlüsselwörter dienen als Funktionen, aber der Compiler generiert den Code inline. Die Ausführung ist deshalb etwas schneller als bei einem Funktionsaufruf. In folgenden Codebeispielen wird die explizite Umwandlung verwendet:

Visual Basic .NET
' DataTable as the DataSource
<%# CType(Container.DataItem, System.Data.DataRowView)("au_id") %>

' DataReader as the DataSource
<%# CType(Container.DataItem, System.Data.Common.DbDataRecord)("au_id") %>

' DataReader as the DataSource
<%# CType(Container.DataItem, System.Data.Common.DbDataRecord)(0) %>
				
Visual C# .NET
// DataTable as the DataSource
<%# ((System.Data.DataRowView)Container.DataItem)["au_id"] %> 

// DataReader as the DataSource
<%# ((System.Data.Common.DbDataRecord)Container.DataItem)["au_id"] %>

// DataReader as the DataSource
<%# ((System.Data.Common.DbDataRecord)Container.DataItem)[0] %>
				
Visual J# .NET
// DataTable as the DataSource
<%# ((System.Data.DataRowView)Container.DataItem)["au_id"] %> 

// DataReader as the DataSource
<%# ((System.Data.Common.DbDataRecord)Container.DataItem)["au_id"] %>

// DataReader as the DataSource
<%# ((System.Data.Common.DbDataRecord)Container.DataItem)[0] %>
				
Beachten Sie, dass in den vorangegangenen Beispielen entweder ein DataTable, der Teil eines DataSet ist, oder ein DataReader als Datenquelle verwendet.

Ereignis "ItemDataBound"

Sie können Daten auch mithilfe des Ereignisses ItemDataBound des jeweiligen Steuerelements binden. Dieses Ereignis tritt ein, wenn die Daten eines Elements an das Steuerelement gebunden werden. Im folgenden HTML-Codebeispiel wird ein Repeater-Steuerelement mit einem ItemTemplate definiert:
<asp:repeater id=rptr runat=server>
   <itemtemplate>
      <asp:label id=lblAuthorID runat=server />
   </itemtemplate>
</asp:repeater>
				
In Ihrer Seite sind die folgenden Methoden erforderlich:

Visual Basic .NET
public Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
  
   'TODO: Daten aus der Datenbank abrufen
   'und an ein Listensteuerelement binden.

End Sub

public Sub rptr_OnItemDataBound(ByVal sender As Object, _
ByVal e As System.Web.UI.WebControls.RepeaterItemEventArgs) Handles rptr.ItemDataBound
   Dim rec As DataRowView
   rec = e.Item.DataItem

   'Achten Sie darauf, dass Sie die Daten auch haben.
   If Not IsDBNull(rec) Then
      Dim l1 As Label
      l1 = e.Item.FindControl("lblAuthorID")
      l1.Text = rec("au_id").ToString()
   End If
End Sub
				
Visual C# .NET
public void Page_Init(object sender, System.EventArgs e)
{
   rptr.ItemDataBound += new RepeaterItemEventHandler(rptr_OnItemDataBound);
}
public void Page_Load(object sender, System.EventArgs e)
{
   // TODO: Daten aus der Datenbank abrufen
   // und an ein Listensteuerelement binden.
}
public void rptr_OnItemDataBound(object sender, RepeaterItemEventArgs e)
{
   System.Data.Common.DbDataRecord rec = (System.Data.Common.DbDataRecord)
                                          e.Item.DataItem;
   if(rec!=null) //Achten Sie darauf, dass Sie die Daten auch haben.
   {
      Label l1 = (Label)e.Item.FindControl("lblAuthorID");
      l1.Text = rec["au_id"].ToString();
   }
}
				
Visual J# .NET
public void Page_Init(Object sender, System.EventArgs e)
{
            rptr.add_ItemDataBound(new RepeaterItemEventHandler(rptr_OnItemDataBound));
}
private void Page_Load(Object sender, System.EventArgs e)
{
            // TODO: Daten aus der Datenbank abrufen
            // und an ein Listensteuerelement binden.
}
public void rptr_OnItemDataBound(Object sender, RepeaterItemEventArgs e)
{
            System.Data.Common.DbDataRecord rec = (System.Data.Common.DbDataRecord)
                                                   e.get_Item().get_DataItem();
            if (rec != null) //Achten Sie darauf, dass Sie die Daten auch haben.
            {
                        Label l1 = (Label)e.get_Item().FindControl("lblAuthorID");
                        l1.set_Text(((rec.get_Item("au_id")).ToString()));
            }
}
				
Hinweis Dies ist ein Artikel, der im Schnellverfahren direkt von der Microsoft-Supportorganisation erstellt wurde. Die hierin enthaltenen Informationen werden als Reaktion auf neue Probleme wie besehen bereitgestellt. Da dieser Artikel im Schnellverfahren erstellt wurde, kann er Tippfehler enthalten und zu einem späteren Zeitpunkt ohne vorherige Ankündigung überarbeitet werden. Weitere zu berücksichtigende Informationen finden Sie in den Nutzungsbedingungen.

Eigenschaften

Artikel-ID: 307860 - Geändert am: Freitag, 23. August 2013 - Version: 2.0
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft ASP.NET 1.0
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Visual J# .NET 2003 Standard Edition
  • Microsoft ASP.NET 1.1
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2003 Standard Edition
Keywords: 
kbarttyperoadmap kbdatabinding kbinfo kbservercontrols KB307860
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com