Ausgangspunkt: Wir haben eine Datenbanktabelle mit Einträgen und ein SharePoint Seitenlayout, welches in einer Eigenschaft einen Filterwert aus der Datenbanktabelle enthält. Nun sollen auf dem Seitenlayout die Datenbankeinträge automatisch dargestellt und gefiltert werden.
Die Entwickler-Lösung ist die Erstellung eines Custom Field Controls mit Visual Studio (Microsoft SharePoint 2007 im Einsatz, Kapitel 15). Im Internet gibt’s dazu auch noch mehrere Beispiele wie zum Beispiel das Media Player Custom Field Control (http://msdn.microsoft.com/en-us/library/aa981226.aspx).
Mit dem SharePoint Designer geht’s aber auch:
Fügen Sie in Ihrer Page innerhalb desselben Content-Controls (vermutlich in PlaceHolderMain) ein oder mehrere FieldValue-Controls hinzu, nach denen Sie dann filtern wollen. Die Eigenschaft FieldName gibt den internen Namen des Feldes an:
<SharePointWebControls:FieldValue ID="PageTitle" FieldName="Title" runat="server"/>
Das folgende sollte in der Seite eigentlich oben schon enthalten sein, ist aber für vorstehende Anweisung notwendig, deshalb hier der Vollständigkeit halber:
<%@ Register TagPrefix="SharePointWebControls" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
Dann fügen Sie aus der Toolbox eine GridView hinzu. Bei der Konfiguration über das SmartTag am Control erstellen Sie eine neue SqlDataSource, in dem Sie bei Datenquelle auf „Neue Datenquelle“ klicken und dann „Datenbank“ auswählen.
Bei der Konfiguration der Verbindung ist darauf zu achten, dass Sie sich über SQL-Authentifizierung an der Datenbank anmelden. Bei der Konfiguration der Abfrage, können Sie über „Where“ einen Filter auf das FieldValue-Control setzen.
Wenn es dort nicht angezeigt wird, einfach im Code selbst setzen:
<asp:SqlDataSource runat="server" id="SqlDataSource1" ProviderName="System.Data.SqlClient" ConnectionString="Data Source=hccth;Initial Catalog=Northwind;Persist Security Info=True;User ID=northwinduser;Password=123qwe@" SelectCommand="SELECT [CompanyName], [ContactName], [ContactTitle], [Phone], [Fax] FROM [Customers] WHERE ([CustomerID] = @CustomerID)">
<SelectParameters>
<asp:ControlParameter ControlID="PageTitle" PropertyName="ItemFieldValue " Name="CustomerID" Type="String" />
</SelectParameters>
</asp:SqlDataSource>
Nun das Seitenlayout abspeichern, veröffentlichen und eine Beispielseite erstellen: