2009-12-10 89 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