2009-12-10 41 views
2

我在Windows Server 2008 Enterprise中使用SharePiont Server 2007 Enterprise,並使用發佈門戶模板。我正在開發使用VSTS 2008 + C#+ .Net 3.5。我已經在SharePoint站點上手工定義了自定義列表(自定義列表的所有列類型都是SharePoint內置類型),並且我想定義一些自定義規則來過濾此列表以僅顯示列表的一部分。任何參考代碼?如何篩選SharePoint上的列表

編輯1:這是我目前的代碼。我已經使用這樣的代碼來檢索我需要的項目,但是如何在SharePoint列表中顯示重新搜索的項目?

   SPSite oSiteCollection = SPContext.Current.Site; 
       SPList oList = oSiteCollection.AllWebs[0].Lists["PeopleTest"]; 
       SPQuery oQuery = new SPQuery(); 
       oQuery.Query = "<Where><Eq><FieldRef Name='Department'/>" + 
         "<Value Type='Text'>Computer</Value></Eq></Where>"; 
       SPListItemCollection collListItems = oList.GetItems(oQuery); 

       foreach (SPListItem oListItem in collListItems) 
       { 
        writer.Write(oListItem["Department"].ToString()+"###"); 
       } 

回答

4

如果您正在使用的服務器(即不是客戶端)的dll,您可以使用SPList.GetItems MethodSPQuery作爲參數:

SPSite oSiteCollection = SPContext.Current.Site; 
SPList oList = oSiteCollection.AllWebs["Site_Name"].Lists["List_Name"]; 
SPQuery oQuery = new SPQuery(); 
oQuery.Query = "<Where><Eq><FieldRef Name='Schedule'/>" + 
     "<Value Type='CHOICE'>2 weeks</Value></Eq></Where>"; 
SPListItemCollection collListItems = oList.GetItems(oQuery); 

foreach (SPListItem oListItem in collListItems) 
{ 
    Label1.Text += SPEncode.HtmlEncode(oListItem["Title"].ToString()) 
     + " -- " + SPEncode.HtmlEncode(oListItem["EndDate"].ToString()) 
     + "<BR>"; 
} 

注意本示例代碼foreach一部分顯示數據HTML格式,僅供參考。目前您可以使用與您使用相同的渲染。關鍵是使用SPQuery.GetItems(...)

如果您使用客戶端DLL,請參閱this link和MSDN中的其他人(此鏈接僅爲示例,它與SharePoint 團隊服務客戶端API相關)。

+0

謝謝!我應該根據你的代碼開發一個Web部件?或者在現有列表中使用您的代碼? – George2 2009-12-10 06:23:38

+0

服務器DLL是指隨SharePoint Server 2007 SDK一起提供的Microsoft.SharePoint.dll? – George2 2009-12-10 06:24:47

+1

您可以基於Web部件進行開發,或者創建具有所需功能的庫項目,並從任何類型的代碼中調用它。您甚至可以創建控制檯應用程序並在SharePoint服務器上運行它... – 2009-12-10 06:26:52