WSS3.0开发-过滤列表内容
2008-08-31 15:14
295 查看
WSS3.0中,过滤列表内容,可以采用以下方法:
1)采用视图,视图中配置过滤条件
2)开发过滤器WebPart,(见这篇文章:编写过滤器WebPart--过滤列表内容)--但是过滤器只能做到精确匹配,无法做模糊查询,大于,小于的限制。
3)开发一个查询webpart,提供CAML查询语句,把这个webpart跟列表放在一起,由它主动控制当前列表。这里就介绍这种方法。
wss的列表其实是一个webpart:ListViewWebPart,我们用SPD打开一个AllItems.aspx页面,转到Code模式,就可以看到ListViewWebPart,注意
ListViewWebPart一个很重要的属性:ListViewXml,就是包含着乱七八糟字符的那个,这是Html编码后的属性值,ListViewXml控制着ListViewWebPart的
显示,包括要输出的字段,查询条件,排序,只要控制ListViewXml就可以控制ListViewWebPart的输出。
那么,怎么做呢?
看以下的示例代码
public class CamlFilterWebPart:WebPart
{
private string _Caml;
[Personalizable(PersonalizationScope.Shared)]
[WebBrowsable]
public string Caml
{
set{_Caml=value;}
get{return _Caml;}
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
if( String.IsNullOrEmtpty(Caml) ) return ;
try{
foreach (WebPart wp in this.Zone.WebParts)
{
if (wp is Microsoft.SharePoint.WebPartPages.ListViewWebPart) //首先找到列表webpart
{
Microsoft.SharePoint.WebPartPages.ListViewWebPart listWp =
(Microsoft.SharePoint.WebPartPages.ListViewWebPart)wp;
XmlDocument doc = new XmlDocument();
doc.LoadXml(istWp.ListViewXml);
XmlNode queryNode = doc.DocumentElement.SelectSingleNode("Query");
queryNode.InnerXml = this.
listWp.ListViewXml = doc.InnerXml; //替换列表显示的Schema
}
}
}catch(Exception ex)
{
this.Controls.Add(new LiteralControl(ex.Message));
}
}
}
CamlFilterWebPart有一个可设计的属性Caml,可以存放查询条件。
CamlFilterWebPart加载的时候,自动获取同一个Zone的ListViewWebPart控制它的查询。
基于这个思路,我们可以作出很强大的查询控件,提供任意的查询条件来控制列表!
1)采用视图,视图中配置过滤条件
2)开发过滤器WebPart,(见这篇文章:编写过滤器WebPart--过滤列表内容)--但是过滤器只能做到精确匹配,无法做模糊查询,大于,小于的限制。
3)开发一个查询webpart,提供CAML查询语句,把这个webpart跟列表放在一起,由它主动控制当前列表。这里就介绍这种方法。
wss的列表其实是一个webpart:ListViewWebPart,我们用SPD打开一个AllItems.aspx页面,转到Code模式,就可以看到ListViewWebPart,注意
ListViewWebPart一个很重要的属性:ListViewXml,就是包含着乱七八糟字符的那个,这是Html编码后的属性值,ListViewXml控制着ListViewWebPart的
显示,包括要输出的字段,查询条件,排序,只要控制ListViewXml就可以控制ListViewWebPart的输出。
那么,怎么做呢?
看以下的示例代码
public class CamlFilterWebPart:WebPart
{
private string _Caml;
[Personalizable(PersonalizationScope.Shared)]
[WebBrowsable]
public string Caml
{
set{_Caml=value;}
get{return _Caml;}
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
if( String.IsNullOrEmtpty(Caml) ) return ;
try{
foreach (WebPart wp in this.Zone.WebParts)
{
if (wp is Microsoft.SharePoint.WebPartPages.ListViewWebPart) //首先找到列表webpart
{
Microsoft.SharePoint.WebPartPages.ListViewWebPart listWp =
(Microsoft.SharePoint.WebPartPages.ListViewWebPart)wp;
XmlDocument doc = new XmlDocument();
doc.LoadXml(istWp.ListViewXml);
XmlNode queryNode = doc.DocumentElement.SelectSingleNode("Query");
queryNode.InnerXml = this.
listWp.ListViewXml = doc.InnerXml; //替换列表显示的Schema
}
}
}catch(Exception ex)
{
this.Controls.Add(new LiteralControl(ex.Message));
}
}
}
CamlFilterWebPart有一个可设计的属性Caml,可以存放查询条件。
CamlFilterWebPart加载的时候,自动获取同一个Zone的ListViewWebPart控制它的查询。
基于这个思路,我们可以作出很强大的查询控件,提供任意的查询条件来控制列表!
相关文章推荐
- WSS3.0开发-过滤列表内容(2)--一个增强的列表元数据查询webpart(SmartQueryWebPart)
- WSS3.0开发-过滤列表内容(2)--一个增强的列表元数据查询webpart(SmartQueryWebPart)
- WSS3.0开发-过滤列表内容(2)--一个增强的列表元数据查询webpart(SmartQueryWebPart)
- WSS3.0开发-过滤列表内容(2)--一个增强的列表元数据查询webpart(SmartQueryWebPart)
- WSS3.0开发-过滤列表内容(1)
- 编写过滤器WebPart--过滤列表内容
- 局域网监控软件功能列表(第一期开发内容)
- MOSS 2010:Visual Studio 2010开发体验(10)——列表开发之内容类型
- jforum二次开发——添加内容过滤
- 原生js实现对select下拉列表的内容过滤
- WSS3.0开发--页面定制(1)--修改列表的表单页面
- SP2010开发和VS2010专家"食谱"--第四章节—列表定义和内容类型(3)--使用对象模型创建自定义内容类型
- SP2010开发和VS2010专家"食谱"--第四章节—列表定义和内容类型(7)--创建列表定义
- 在InfoPath中使用重复表然后按照日期过滤sharepoint列表内容
- MOSS 2010:Visual Studio 2010开发体验(31)——如何给列表绑定多个内容类型
- 团队开发框架(Developement Structure for Team),内容列表及整理计划
- Python Django开发中XSS内容过滤问题的解决
- SP2010开发和VS2010专家"食谱"--第四章节—列表定义和内容类型
- SP2010开发和VS2010专家"食谱"--第四章节—列表定义和内容类型(4)--关联文档模板和内容类型
- IOS开发中tableView显示列表内容数据(storyboard版)