应用场景:项目中总会遇到一些列表,存着是用户、项目等数据,而我们需要查询有哪些项目,这时候,就需要用到模糊查询了,而这样的查询,基本不需要跨列表,所以,也没必要配置复杂的搜索,用Designer(简称spd)配置数据视图,就可以做到。
如下图,我们先建个测试列表,插入测试数据,比较乱,大家不要见笑啊。
打开spd,打开网站,根据母版页新建一个页面(当然,你开心的话,也可以建一个页面布局,新建一个页面,只要能用spd,就OK),如下图:
然后,插入数据视图(先选中要插入数据视图的位置,最好在spd设计模式下,然后插入就可以了,否则位置可能不太准),如下图
显示我们要查询的列表数据,如下图
然后,选择我们需要的字段(我这里用了标题、创建时间),插入多项目视图(其他选项也有应用场景,有兴趣可以试试)
如下图,显示出来我们列表里的所有项目了(当然,样式很难看,你可以找美工寻求帮助,设计成你喜欢的样子),我们添加需要的参数,进行模糊查询使用
新建参数,即可,名字随意,但最好见名知义
再然后,就是配置筛选了。在数据视图里找到<xsl:variable name="Rows" select="/dsQueryResponse/Rows/Row"/>,这句话,在里面修改为
<xsl:variable name="Rows" select="/dsQueryResponse/Rows/Row[($Title = '' or contains(@Title,$Title)> 0)]"/>
[($Title = '' or contains(@Title,$Title)> 0)]意思是Title为空,或者Title字段里包含Title查询字符串,有点乱哈,@的是字段名,$的是查询字符串。
即可完成模糊查询,下面,我们在url上传值,试试我们的模糊查询,好使不好使。
如下图:
当然,如果我们要查询的是汉字的话,那么,我们需要对汉字进行escape编码,js脚本就可以实现了。然后,写一个input标签,一个button标签,一个事件,就完成我们的单列表模糊查询了,下面看我简单的小例子吧,js写的不够精细,其实如果想要input回车也能查询,加个事件监视回车就可以咯,大家自己开动脑筋吧。
<div> <script type="text/javascript"> function search() { var biaoti = document.getElementById("searchbox").value; document.location = "/Pages/SingleListSearch.aspx?Title="+escape(biaoti); } </script> <table style="width: 100%" cellpadding="0" cellspacing="0" class="style1"> <tr> <td><input name="searchbox"></td> </tr> <tr> <td><button onclick="search()">查询</button></td> </tr> </table> </div> |
如下图,实现结果,不是很炫,但很实用:
总结:我不否认,sharepoint随着版本提升,VS开发的功能越来越强劲,当然,我们不要忘了最简单的工具spd,几分钟就可以搞定,不必去写webpart,挺好的方式,记下来,给大家参考。