需求:
DocumentLibrarySearch WebPart可以绑定任意一个Document Library, 绑定完成之后, 会根据该Library的结构生成过滤条件.
呈现:
假定在/TestSearch站点下, 有如下结构的DocumentLibrary, 名字为Legal Precedents:
DocumentLibrarySearch WebPart的属性设定, 与上面的Library绑定:
最终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