SharePoint 2013 客户端模型(Client Object Model) 调用搜索(Query Search):
SharePoint 2013 提供客户端调用Search 模型的方式,方便把SharePoint 搜索和其他系统整合。
下面说明如何在一个Asp.net程序中调用SharePoint 搜索:
1. 使用VS2010 新建一个 Asp.net Web Application 项目
2. 在该项目中添加如下引用
C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll
C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll
C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Search.dll
3. 新建一个Web form,使用默认文件名 WebForm1.aspx
4. 在web form提添加如下控件
a. 添加一个TextBox (给用户输入搜索关键字用,命名为txtSearchBox)
b. 添加一个Button, text 改为Search , 用于提交搜索查询
c. 添加一个GridView,命名为 resultGrid, 用于显示查询结果
5. 给Button 添加点击事件,代码如下:
using (ClientContext clientContext = new ClientContext("http://SharePointServer/SubSite"))
{
KeywordQuery keywordQuery = new KeywordQuery(clientContext);
keywordQuery.QueryText = txtSearchBox.Text;
SearchExecutor searchExecutor = new SearchExecutor(clientContext);
ClientResult<ResultTableCollection> results = searchExecutor.ExecuteQuery(keywordQuery);
clientContext.ExecuteQuery();
DataTable table = new DataTable();
DataColumn titleCol = new DataColumn("Title");
table.Columns.Add(titleCol);
DataColumn pathCol = new DataColumn("Path");
table.Columns.Add(pathCol);
foreach(var resultRow in results.Value[0].ResultRows)
{
DataRow row = table.NewRow();
row["Title"] = resultRow["Title"];
row["Path"] = resultRow["Path"];
table.Rows.Add(row);
}
this.resultGrid.DataSource = table;
this.resultGrid.DataBind();
}