Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Aktualisiert: November 2007
Dieses Thema enthält Anweisungen zum Erstellen und Ausführen des datengebundenen WebPart-Steuerelements; ein vollständiges Codebeispiel hierzu finden Sie unter dem Thema Beispiel für ein datengebundenes Webparts-Steuerelement. Im Codebeispiel wird veranschaulicht, wie ein benutzerdefiniertes Serversteuerelement erstellt wird, mit dem ein GridView-Steuerelement an eine Datenquelle gebunden wird. Außerdem wird für die Verwendung in Webparts-Anwendungen von der WebPart-Klasse geerbt. Dieses Thema stellt verwandte Informationen bereit, die für die Kompilierung des Codebeispiels und für die Konfigurierung einer ASP.NET-Anwendung zum Ausführen des Steuerelements als Webparts-Steuerelement erforderlich sind.
Kompilieren des Webparts-Steuerelements
Wenn Sie das Codebeispiel ausführen möchten, müssen Sie diesen Quellcode kompilieren. Sie können den Quellcode explizit kompilieren und die daraus entstehende Assembly im Ordner Bin der Website oder im globalen Assemblycache ablegen. Sie können den Quellcode jedoch auch im Ordner App_Code der Site ablegen, wo er dynamisch zur Laufzeit kompiliert wird. In diesem Codebeispiel wird die dynamische Kompilierung verwendet. Eine exemplarische Vorgehensweise, in der die Kompilierung veranschaulicht wird, finden Sie unter Exemplarische Vorgehensweise: Entwickeln und Verwenden eines benutzerdefinierten Serversteuerelements.
So kompilieren Sie das datengebundene Webparts-Steuerelement dynamisch
Erstellen Sie im Stammordner der Webanwendung den Ordner App_Code.
Rufen Sie den Quellcode für das datengebundene WebPart-Benutzersteuerelement aus dem Thema Beispiel für ein datengebundenes Webparts-Steuerelement ab. Platzieren Sie die Quellcodedatei im Ordner App_Code. Dabei spielt der Dateiname aufgrund der dynamischen Kompilierung keine Rolle. Die Datei muss jedoch die der von Ihnen verwendeten Sprache entsprechende Erweiterung aufweisen (z. B. .cs oder .vb).
Verwenden des Steuerelements in einer Webparts-Anwendung
Für das Konfigurieren einer Anwendung zur Verwendung von Webparts muss Ihre ASP.NET-Website die Authentifizierung einzelner Benutzer ermöglichen und Sie müssen über eine Datenbank verfügen, die Anwendungsdienste einschließlich Personalisierung behandeln kann. Außerdem muss für dieses Beispiel (aufgrund der Verwendung eines datengebundenen Steuerelements) eine Verbindungszeichenfolge in der Datei Web.config erstellt werden, mit der die Datenquelle eine Verbindung zur Northwind-Beispieldatenbank herstellen kann. Nach dem Konfigurieren der Anwendung muss in jeder Webparts-Anwendung ein WebPartManager-Steuerelement hinzugefügt werden. Außerdem muss jeder Webseite mindestens ein WebPartZone-Steuerelement hinzugefügt werden, das den WebPart sowie die Serversteuerelemente in der Webparts-Anwendung hostet. In der unten stehenden zweiten Prozedur wird veranschaulicht, wie diese Steuerelemente hinzugefügt werden und wie die weiteren Schritte zur Vorbereitung der Seite für das Ausführen des datengebundenen Steuerelements ausgeführt werden.
So konfigurieren Sie eine ASP.NET-Anwendung für das Ausführen von Webparts-Steuerelementen
Stellen Sie sicher, dass Ihre ASP.NET-Webanwendung für das Erkennen einzelner Benutzer konfiguriert ist. Anweisungen zum Erstellen einer solchen Site finden Sie unter Gewusst wie: Erstellen und Konfigurieren von virtuellen Verzeichnissen in IIS 5.0 und 6.0 oder Gewusst wie: Erstellen und Konfigurieren von lokalen ASP.NET-Websites in IIS 6.0.
Stellen Sie sicher, dass Sie über einen konfigurierten Personalisierungsanbieter und eine konfigurierte Datenbank verfügen. Die Webparts-Personalisierung ist in der Standardeinstellung aktiviert und verwendet den SQL-Personalisierungsanbieter (SqlPersonalizationProvider) mit der Microsoft SQL Server Express Edition (SSE) zum Speichern von Personalisierungsdaten. In diesem Thema werden SSE und der Standard-SQL-Anbieter verwendet. Wenn Sie SSE bereits installiert haben, wird keine Konfigurierung benötigt. SSE ist in Verbindung mit Microsoft Visual Studio 2005 als optionale Installationskomponente erhältlich oder kann kostenlos unter Microsoft.com gedownloadet werden. Das Verwenden einer Vollversion von Microsoft SQL Server erfordert das Installieren und Konfigurieren einer Datenbank für ASP.NET-Anwendungsdienste sowie das Konfigurieren des SQL-Personalisierungsanbieters zum Herstellen einer Verbindung mit der Datenbank. Ausführliche Informationen finden Sie unter Erstellen und Konfigurieren der Datenbank für die Anwendungsdienste für SQL Server. Sie können auch einen benutzerdefinierten Anbieter für Datenbanken oder Speichermöglichkeiten erstellen und konfigurieren, die nicht SQL-basiert sind. Ausführliche Informationen sowie ein Codebeispiel finden Sie unter Implementieren eines Mitgliedschaftsanbieters.
Erstellen Sie eine Verbindungszeichenfolge, damit das datengebundene Steuerelement eine Verbindung mit der Northwind-Beispieldatenbank herstellen kann. Wenn Sie das Beispiel ausführen möchten, benötigen Sie Zugriff auf die Northwind-Beispieldatenbank, der von SQL Server bereitgestellt wird. Wenn Sie die Northwind-Beispieldatenbank nicht installiert haben, können Sie Skripts zum Erstellen und Installieren der Datenbank vom Microsoft Download Center downloaden.
Ein empfohlener Ansatz für Verbindungszeichenfolgen besteht darin, sie in der Datei Web.config für die Anwendung zu platzieren. Weitere Informationen zu Konfigurationsdateien finden Sie unter ASP.NET-Konfigurationsdateien. Im folgenden Codebeispiel wird eine Verbindungszeichenfolge in der Datei Web.config veranschaulicht, mit der eine Verbindung zu einer lokalen Northwind-Instanz hergestellt wird, die unter SSE ausgeführt wird. Beachten Sie, dass die einfachen Anführungszeichen ('), die normalerweise als Trennzeichen für den Datenbankpfad fungieren, als Entitäten (") wiedergegeben werden. Dies ist erforderlich, da Web.config eine XML-Datei ist.
<connectionStrings> <add name="nwind" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename= "C:\SQL Server 2000 Sample Databases\NORTHWND.MDF"; Initial Catalog=Northwind;Integrated Security=True;" providerName="System.Data.SqlClient" /> </connectionStrings>
Hinweis:Es wird empfohlen, vertrauliche Daten wie Kennwörter in einer Verbindungszeichenfolgen zu verschlüsseln. Weitere Informationen zum Verschlüsseln von Konfigurationsdaten finden Sie unter Exemplarische Vorgehensweise: Verschlüsseln von Konfigurationsinformationen mithilfe der geschützten Konfiguration.
Fügen Sie im Abschnitt <system.web> der Datei Web.config ein <webparts>-Element hinzu. Dies ist nicht für alle Webparts-Anwendungen erforderlich; bestimmte Features von Webparts-Anwendungen müssen jedoch in diesem Abschnitt konfiguriert werden, wenn Sie sie verwenden möchten. Mit dem datengebundenen WebPart-Steuerelement im Beispiel kann eine Konfigurationsdatei mit dem Zustand und den Eigenschaftendaten exportiert werden. Da das Exportfeature in Webparts-Anwendungen in der Standardeinstellung deaktiviert ist, müssen Sie es zunächst im Abschnitt <webParts> aktivieren. Fügen Sie dem <webParts>-Element ein enabledExport-Attribut hinzu, und legen Sie seinen Wert auf true fest, wie im folgenden Codebeispiel veranschaulicht:
<webParts enableExport="true" />Speichern und schließen Sie die Datei Web.config.
So bereiten Sie eine Webseite für das Hosten von Webparts-Steuerelementen vor
Erstellen Sie ein Benutzersteuerelement, mit dem Benutzer zwischen den verschiedenen zur Verfügung stehenden Webparts-Anzeigemodi auf der Webseite wechseln können. Dieses Steuerelement sowie der nächste Schritt sind für das Ausführen des datengebundenen Webparts-Steuerelements nicht erforderlich. Es handelt sich dabei jedoch um ein für viele Webparts-Seiten nützliches Feature. Fügen Sie den folgenden Code für das Benutzersteuerelement in einen Editor ein, und speichern Sie die Datei im Stammordner der Webanwendung (je nach der verwendeten Sprache) unter dem Namen Displaymodemenucs.ascx oder Displaymodemenuvb.ascx.
<!-- This user control recognizes what display modes are possible on a page, given the zones that are present, and enables users to switch among the display modes. --> <%@ control language="vb" classname="DisplayModeMenuVB"%> <script > ' Use a field to reference the current WebPartManager. Dim _manager As WebPartManager Sub Page_Init(ByVal sender As Object, ByVal e As EventArgs) AddHandler Page.InitComplete, AddressOf InitComplete End Sub Sub InitComplete(ByVal sender As Object, ByVal e As System.EventArgs) _manager = WebPartManager.GetCurrentWebPartManager(Page) Dim browseModeName As String = WebPartManager.BrowseDisplayMode.Name ' Fill the dropdown with the names of supported display modes. Dim mode As WebPartDisplayMode For Each mode In _manager.SupportedDisplayModes Dim modeName As String = mode.Name ' Make sure a mode is enabled before adding it. If mode.IsEnabled(_manager) Then Dim item As New ListItem(modeName + " Mode", modeName) DisplayModeDropdown.Items.Add(item) End If Next mode End Sub ' Change the page to the selected display mode. Sub DisplayModeDropdown_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Dim selectedMode As String = DisplayModeDropdown.SelectedValue Dim mode As WebPartDisplayMode = _manager.SupportedDisplayModes(selectedMode) If Not (mode Is Nothing) Then _manager.DisplayMode = mode End If End Sub Sub Page_PreRender(ByVal sender As Object, ByVal e As EventArgs) DisplayModeDropdown.SelectedValue = _manager.DisplayMode.Name End Sub </script> <div> <asp:DropDownList ID="DisplayModeDropdown" AutoPostBack="true" OnSelectedIndexChanged="DisplayModeDropdown_SelectedIndexChanged" /> </div><!-- This user control recognizes what display modes are possible on a page, given the zones that are present, and enables users to switch among the display modes. --> <%@ control language="C#" classname="DisplayModeMenuCS"%> <script > // Use a field to reference the current WebPartManager. WebPartManager _manager; void Page_Init(object sender, EventArgs e) { Page.InitComplete += new EventHandler(InitComplete); } void InitComplete(object sender, System.EventArgs e) { _manager = WebPartManager.GetCurrentWebPartManager(Page); String browseModeName = WebPartManager.BrowseDisplayMode.Name; // Fill the dropdown with the names of supported display modes. foreach (WebPartDisplayMode mode in _manager.SupportedDisplayModes) { String modeName = mode.Name; // Make sure a mode is enabled before adding it. if (mode.IsEnabled(_manager)) { ListItem item = new ListItem(modeName + " Mode", modeName); DisplayModeDropdown.Items.Add(item); } } } // Change the page to the selected display mode. void DisplayModeDropdown_SelectedIndexChanged(object sender, EventArgs e) { String selectedMode = DisplayModeDropdown.SelectedValue; WebPartDisplayMode mode = _manager.SupportedDisplayModes[selectedMode]; if (mode != null) _manager.DisplayMode = mode; } void Page_PreRender(object sender, EventArgs e) { DisplayModeDropdown.SelectedValue = _manager.DisplayMode.Name; } </script> <div> <asp:DropDownList ID="DisplayModeDropdown" AutoPostBack="true" OnSelectedIndexChanged="DisplayModeDropdown_SelectedIndexChanged" /> </div>Erstellen Sie eine neue ASP.NET-Seite, um das benutzerdefinierte WebPart-Steuerelement und die anderen Steuerelemente zu hosten. Fügen Sie der Seite direkt unterhalb der Page-Direktive eine Register-Direktive hinzu, um das Benutzersteuerelement zu registrieren, das Sie gerade erstellt haben. Der Inhalt der Direktive hängt von der von Ihnen verwendeten Sprache ab und sollte der Darstellung im folgenden Beispiel entsprechen:
[Visual Basic]
<%@ register src="displaymodevb.ascx" tagname="displaymodevb" tagprefix="uc1" %>[C#]
<%@ register src="displaymodecs.ascx" tagname="displaymodecs" tagprefix="uc1" %>Fügen Sie nun eine Register-Direktive für das benutzerdefinierte WebPart-Steuerelement hinzu. Da in diesem Thema die dynamische Kompilierung verwendet wird, müssen Sie der Direktive kein Assembly-Attribut hinzufügen. Fügen Sie direkt unterhalb der vorherigen Direktive in der Datei eine weitere Register-Direktive hinzu, weisen Sie dem tagprefix-Attribut eine beliebige Zeichenfolge zu, und weisen Sie den Namespace des benutzerdefinierten Steuerelements dem namespace-Attribut zu. Beachten Sie analog zum vorherigen Beispiel die Abhängigkeit von der von Ihnen verwendeten Sprache
[Visual Basic]
<%@ register tagprefix="aspSample" namespace="Samples.AspNet.VB.Controls" %><%@ register tagprefix="aspSample" namespace="Samples.AspNet.CS.Controls" %>Fügen Sie der Seite im <form>-Element ein <asp:webpartmanager>-Element hinzu, wie im folgenden Beispiel dargestellt. Alle Seiten, die Webparts verwenden, erfordern ein WebPartManager-Steuerelement.
<asp:webpartmanager id="WebPartManager1" > </asp:webpartmanager>Deklarieren Sie das Benutzersteuerelement unmittelbar nach dem <asp:webpartmanager>-Element, um zwischen den Anzeigemodi zu wechseln. Die genaue Deklaration eines Steuerelements hängt von der verwendeten Sprache ab, wie im nachfolgenden Beispiel dargestellt wird:
[Visual Basic]
<uc1:displaymodevb id="Displaymodevb1" /><uc1:displaymodecs id="Displaymodecs1" />Fügen Sie nach dem Benutzersteuerelement eine Tabelle mit einer oder zwei Spalten ein, um das Layout der Steuerelemente auf der Seite zu strukturieren. Das Tabellenmarkup sollte der Darstellung im folgenden Codebeispiel entsprechen:
<table style="width: 80%; position: relative"> <tr valign="top"> <td style="width: 40%"> </td> <td style="width: 40%"> </td> </tr> </table>Fügen Sie in jedem Satzes von <td>-Tags ein <asp:webpartzone>-Element hinzu. Eine von der WebPartZoneBase-Klasse abgeleitete Zone muss WebPart-Steuerelemente enthalten, und diese müssen für alle Webparts-Funktionen aktiviert werden. Das Markup für die erste Zone sollte der Darstellung im folgenden Codebeispiel entsprechen.
<asp:webpartzone id="WebPartZone1" style="position: relative" > <parttitlestyle font-size="14" font-names="Verdana" /> <zonetemplate> </zonetemplate> </asp:webpartzone>Das Markup für die zweite Zone sollte der folgenden Darstellung entsprechen:
<asp:webpartzone id="WebPartZone2" style="position: relative" > <zonetemplate> </zonetemplate> </asp:webpartzone>Deklarieren Sie das datengebundene WebPart-Benutzersteuerelement in der ersten Zone zwischen den <zonetemplate> Tag, wie im folgenden Codebeispiel dargestellt. Beachten Sie, dass für dieses Markup das in der Register-Direktive für das Steuerelement definierte Tagpräfix sowie der Klassenname für das Benutzersteuerelement verwendet werden. Beachten Sie weiterhin, dass eine vom Benutzer im Steuerelement (ConnectionString) definierte Eigenschaft als Attribut mit der ihr zugeordneten Verbindungszeichenfolge aus der Datei Web.config angezeigt wird. Dadurch können Seitenentwickler bestimmen, welche Verbindungszeichenfolge für das Steuerelement verwendet werden soll. Das Markup sollte der Darstellung im folgenden Beispiel entsprechen:
<aspSample:SmallGridWebPart id="grid1" title="Customer Phone List" width="300" connectionstring="<%$ ConnectionStrings:nwind %>" />Deklarieren Sie zum Vergleich ein gewöhnliches Calendar-Serversteuerelement in der zweiten Zone zwischen den <zonetemplate>-Tags. Da das Steuerelement in einem WebPartZone-Steuerelement platziert wird, verhält es sich zur Laufzeit wie ein WebPart-Steuerelement. Weitere Informationen zum Verwenden von Serversteuerelementen in Webparts Anwendungen finden Sie unter Verwenden von ASP.NET-Serversteuerelementen in Webparts-Anwendungen. Das Markup sollte der Darstellung im folgenden Codebeispiel entsprechen:
<asp:calendar id="Calendar1" style="position: relative"></asp:calendar>Speichern und schließen Sie die Seite. Sie können nun die Seite ausführen und das WebPart-Benutzersteuerelement testen. Der vollständige Code für die Seite sollte der Darstellung im folgenden Codebeispiel entsprechen:
<%@ Page Language="VB" %> <!-- Register the user control to change display modes. --> <%@ register src="displaymodevb.ascx" tagname="displaymodevb" tagprefix="uc1" %> <!-- Register the namespace that contains the custom WebPart control. Note there is no assembly attribute because this example uses dynamic compilation, by placing the source file for the control in an App_Code subfolder. --> <%@ register tagprefix="aspSample" namespace="Samples.AspNet.VB.Controls" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head > <title>Untitled Page</title> </head> <body> <form id="form1" > <div> <asp:webpartmanager id="WebPartManager1" > </asp:webpartmanager> <uc1:displaymodevb id="Displaymodevb1" /> <br /> <table style="width: 80%; position: relative"> <tr valign="top"> <td style="width: 40%"> <asp:webpartzone id="WebPartZone1" style="position: relative" > <parttitlestyle font-size="14" font-names="Verdana" /> <zonetemplate> <aspSample:SmallGridWebPart id="grid1" title="Customer Phone List" width="300" connectionstring="<%$ ConnectionStrings:nwind %>" /> </zonetemplate> </asp:webpartzone> </td> <td style="width: 40%"> <asp:webpartzone id="WebPartZone2" style="position: relative"> <zonetemplate> <asp:calendar id="Calendar1" style="position: relative"></asp:calendar> </zonetemplate> </asp:webpartzone> </td> </tr> </table> </div> </form> </body> </html><%@ Page Language="C#" %> <!-- Register the user control to change display modes. --> <%@ register src="displaymodecs.ascx" tagname="displaymodecs" tagprefix="uc1" %> <!-- Register the namespace that contains the custom WebPart control. Note there is no assembly attribute because this example uses dynamic compilation, by placing the source file for the control in an App_Code subfolder. --> <%@ register tagprefix="aspSample" namespace="Samples.AspNet.CS.Controls" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head > <title>Untitled Page</title> </head> <body> <form id="form1" > <div> <asp:webpartmanager id="WebPartManager1" > </asp:webpartmanager> <uc1:displaymodecs id="Displaymodecs1" /> <br /> <table style="width: 80%; position: relative"> <tr valign="top"> <td style="width: 40%"> <asp:webpartzone id="WebPartZone1" style="position: relative" > <parttitlestyle font-size="14" font-names="Verdana, Arial" /> <zonetemplate> <aspSample:SmallGridWebPart id="grid1" title="Customer Phone List" width="300" connectionstring="<%$ ConnectionStrings:nwind %>" /> </zonetemplate> </asp:webpartzone> </td> <td style="width: 40%"> <asp:webpartzone id="WebPartZone2" style="position: relative"> <zonetemplate> <asp:calendar id="Calendar1" style="position: relative"></asp:calendar> </zonetemplate> </asp:webpartzone> </td> </tr> </table> </div> </form> </body> </html>