2010-11-22 12 views
0

Ich habe benutzerdefinierte SPlist mit einigen Feldern, die ich an einen Repeater in einem visuellen Webpart binden möchte. Ich kann eine SPDataSource nicht verwenden, da ich vor dem Binden einige benutzerdefinierte Sachen mit der Liste machen muss.Sharepoint 2010 Datenbindung mit benutzerdefinierten Listenspalten

Wie binde ich eine benutzerdefinierte Spalte auf diese Weise? Wenn ich Eval auf einer benutzerdefinierten Spalte verwenden, bekomme ich einen Fehler

Wenn ich einen Test mit der Datenquelle zu tun funktioniert es wieder Eval („HoursOfOperation“):

<SharePoint:SPDataSource runat="server" ID="data" DataSourceMode="List" 
    SelectCommand="<Where><Eq><FieldRef Name='CBC'/><Value Type='Boolean'>0</Value></Eq></Where>"> 
    <SelectParameters> 
     <asp:Parameter Name="WebUrl" DefaultValue="/" /> 
     <asp:Parameter Name="ListName" DefaultValue="Locations" /> 
    </SelectParameters> 
</SharePoint:SPDataSource> 

Aber wenn ich den folgenden Code verwende ich Fehler erhalten DataBinding: 'Microsoft.SharePoint.SPListItem' enthält keine Eigenschaft mit dem Namen 'HoursOfOperation'.

SPSite site = SPContext.Current.Site; 
    SPWeb web = site.RootWeb; 

    SPQuery query = new SPQuery(); 
    query.ViewFieldsOnly = true; 
    query.Query = string.Concat(
           "<Where><Eq>", 
            "<FieldRef Name='CBC'/>", 
            "<Value Type='Boolean'>0</Value>", 
           "</Eq></Where>" 
           ); 

    SPList list = web.Lists["Locations"]; 
    SPListItemCollection items = list.GetItems(query); 

    rp.DataSource = list; 
    rp.DataBind(); 

Was fehlt mir hier?

Antwort

1

Ok gefunden, das selbst:

Für nicht-indizierten Eigenschaften müssen Sie die Dataitem zu einem SPListItem werfen und die Eigenschaft von Namen.

<%# ((SPListItem)Container.DataItem)["HoursOfOperation"] %> 
Verwandte Themen