现在的位置: 首页 > 综合 > 正文

Custom Sharepoint Document Library Search WebPart

2013年10月11日 ⁄ 综合 ⁄ 共 1137字 ⁄ 字号 评论关闭

需求:

DocumentLibrarySearch WebPart可以绑定任意一个Document Library, 绑定完成之后, 会根据该Library的结构生成过滤条件.

 

呈现:

假定在/TestSearch站点下, 有如下结构的DocumentLibrary, 名字为Legal Precedents:

Legal Precedents的结构

 

DocumentLibrarySearch WebPart的属性设定, 与上面的Library绑定:

WebPart属性设定

 

 

最终WebPart呈现出来的效果:

WebPart效果

 

 

选择一些过滤条件后, 按Search按钮, 会呈现结果的画面:

 搜索结果

 

 

优点:

大家都知道, SharePoint自带的Search, 也可以搜索当前的List(或DocumentLibrary), 但是Sharepoint只提供全文搜索, 那么当List越来越大时, 搜索结果的满意度也会越来越差.

这个自制的DocumentLibrarySearch避免了这个问题. 它自动生成与List相对应的filter条件, 也就是说可以更精确的查找User想要的Item.

另外, 该WebPart搜索是不需要预先Crawl的.  而Sharepoint Search是需要Crawl之后才可以搜索.

 

缺点:

该WebPart 的功能是通过SPList.Items.GetDataTable.Select("这里是搜索语句") 实现的, DataTable的搜索性能可能远远低于Sharepoint Crawl之后的索引查询.

所以绑定的List如果超过上万行, 速度将受到影响.

 

 

如何实现:

代码部分主要由以下几个类组成:

DocumentLibrarySearchWebPart.cs -- 继承WebPart, 使用DocumentFilterTable和DocumentSearchResult, 负责呈现过滤条件和结果显示.

DocumentLibrarySearchEditorPart.cs -- 继承EditorPart, 负责属性修改和保存

DocumentFilterTable.cs -- 继承WebControl和IPostBackDataHandler, 负责生成Filter条件.

DocumentSearchResult.cs -- 继承WebControl和IPostBackDataHandler, 负责结果的显示和分页功能.

 

源代码下载: 我已放到我的资源:

http://download.csdn.net/detail/sozdream/4326001

整个包比较大, 5mb吧, 里面还包括我了我做的其他很多webparts, list, list field, 之类之类.... 我自己也有点记不清了.

这篇文章的webpart是Magna.Webparts.DocumentLibrarySearch

 

 

抱歉!评论已关闭.