WSS3.0开发-过滤列表内容(2)--一个增强的列表元数据查询webpart(SmartQueryWebPart)
2008-09-01 15:50
447 查看
WSS3.0开发-过滤列表内容(2)--一个增强的列表元数据查询webpart(SmartQueryWebPart) SmartQuery 是一个WSS(MOSS)列表查询解决方案,可以给WSS的所有列表添加字段查询的功能。
您需要做的只是开发一个查询字段布局用户控件,声明查询字段及其排列,然后利用SmartQueryWebPart加载这个用户控件即可。
使用步骤:
----------------------------------------------------------------------
1)首先下载:http://files.cnblogs.com/jianyi0115/SmartQuery_v1.0.zip 并解压。
2) 将CodeArt.SharePoint.CamlQuery.dll和CodeArt.SharePoint.SmartQuery.dll加入GAC。
3)在站点的web.config的 <SafeControls>节点下添加webpart声明:
<SafeControl Assembly="CodeArt.SharePoint.SmartQuery, Version=1.0.0.0, Culture=neutral, PublicKeyToken=df96d56002e5fe16" Namespace="CodeArt.SharePoint.SmartQuery" TypeName="*" Safe="True" AllowRemoteDesigner="True" />
4)将示例查询布局用户控件 CodeArt_ExampleQueryLayout.ascx和CodeArt_ExampleQueryLayout2.ascx
复制到C:"Program Files"Common Files"Microsoft Shared"web server extensions"12"TEMPLATE"CONTROLTEMPLATES
5)进入> Web 部件库 > 新建 Web 部件 页面,添加CodeArt.SharePoint.SmartQuery.SmartQueryWebPart。
6)进行测试:示例控件是为 任务 列表开发的,因此,转到一个任务列表的AllItem.aspx页面,进入编辑模式,
添加 SmartQueryWebPart。
7)退出编辑模式,就可以看到效果了。
如何开发自己的查询布局控件:
----------------------------------------------------------------------------
1)查询布局用户控件可以是任意用户控件,只要实现了CodeArt.SharePoint.SmartQuery.ICamlProvider接口即可。
2)为了简化开发,用户控件可以从 CodeArt.SharePoint.SmartQuery.BaseLayoutControl继承,参考CodeArt_ExampleQueryLayout.ascx的代码:
<%@ Control Language="C#"
Inherits="CodeArt.SharePoint.SmartQuery.BaseLayoutControl,CodeArt.SharePoint.SmartQuery, Version=1.0.0.0, Culture=neutral, PublicKeyToken=df96d56002e5fe16"%>
<%@ Register Tagprefix="codeArt" Namespace="CodeArt.SharePoint.SmartQuery" Assembly="CodeArt.SharePoint.SmartQuery, Version=1.0.0.0, Culture=neutral, PublicKeyToken=df96d56002e5fe16" %>
<div>
<table>
<tr>
<td>
标题:
</td>
<td><codeArt:QueryControl runat="server" FieldName="标题" id="f1" ShowTitle="false" /></td>
<td>
截止日期:
</td>
<td> <codeArt:QueryControl runat="server" FieldName="截止日期" id="f2" ShowTitle="false"/></td>
<td>
分配对象:
</td>
<td> <codeArt:QueryControl runat="server" FieldName="分配对象" id="f3" ShowTitle="false"/></td>
<td>
优先级:
</td>
<td> <codeArt:QueryControl runat="server" FieldName="优先级" id="f4" ShowTitle="false"/></td>
<td>
<asp:Button runat="Server" Text="查询" ID="btn1" />
</td>
</tr>
</table>
</div>
说明:QueryControl表示一个查询字段,它会按照字段类型呈现不同的样式,如 文本框,下拉列表,时间选择,人员选择等。
3)如果要进行更高级的控制,可以重载BaseLayoutControl的QueryExpression属性,来实现自己的查询条件控制。
请参考CodeArt_ExampleQueryLayout2.ascx的代码:
<%@ Control Language="C#"
Inherits="CodeArt.SharePoint.SmartQuery.BaseLayoutControl,CodeArt.SharePoint.SmartQuery, Version=1.0.0.0, Culture=neutral, PublicKeyToken=df96d56002e5fe16"%>
<%@ Register Tagprefix="codeArt" Namespace="CodeArt.SharePoint.SmartQuery" Assembly="CodeArt.SharePoint.SmartQuery, Version=1.0.0.0, Culture=neutral, PublicKeyToken=df96d56002e5fe16" %>
<%@ Register Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> <%@ Register Tagprefix="Utilities" Namespace="Microsoft.SharePoint.Utilities" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Import Namespace="Microsoft.SharePoint" %>
<%@ Assembly Name="CodeArt.SharePoint.CamlQuery, Version=1.0.0.0, Culture=neutral, PublicKeyToken=43536cfde91ea799" %>
<%@ Import Namespace="CodeArt.SharePoint.CamlQuery" %>
<script runat="server">
/// <summary>
/// 创建查询表达式
/// </summary>
public override CamlExpression QueryExpression
{
get
{
CamlExpression expr = null;
QueryField title = new QueryField("标题", false);
QueryField des = new QueryField("说明", false);
if (txtTitle.Text != "")
expr = title.Contains(txtTitle.Text);
if (txtDes.Text != "")
expr = Append( expr , des.Contains( txtDes.Text ) );
return expr ;
}
}
/// <summary>
/// 链接查询条件
/// </summary>
/// <param name="expr1"></param>
/// <param name="expr2"></param>
/// <returns></returns>
CamlExpression Append( CamlExpression expr1 , CamlExpression expr2 )
{
if (expr1 == null)
return expr2;
else
return expr1 && expr2;
}
</script>
<div>
<table>
<tr>
<td>
标题:
</td>
<td>
<asp:TextBox runat="server" ID="txtTitle"></asp:TextBox>
</td>
<td>
说明:
</td>
<td> <asp:TextBox runat="server" ID="txtDes"></asp:TextBox></td>
<td>
<asp:Button runat="Server" Text="查询" ID="btn1" />
</td>
</tr>
</table>
</div>
--------------------------------------------
说明:SmartQuery采用CamlQuery类库实现查询条件的拼接,CamlQuery类库类库的使用参见压缩包里的CamlQuery_Manual.txt。
或参考以下链接:
WSS3.0开发--你还在为写CAML痛苦吗?
CodeArt.SharePoint.CamlQuery_0.9发布(源码)
4)布局控件开发好后,放到CONTROLTEMPLATES目录,然后到AllItem页面修改SmartQueryWebPart的LayoutControlPath属性为布局控件的虚拟路径,
如 ~/_CONTROLTEMPLATES/CodeArt_ExampleQueryLayout.ascx
下载 dll:http://files.cnblogs.com/jianyi0115/SmartQuery_v1.0.zip
另:SmartQueryWebPart的实现方式可以参考:
WSS3.0开发-过滤列表内容(1)
您需要做的只是开发一个查询字段布局用户控件,声明查询字段及其排列,然后利用SmartQueryWebPart加载这个用户控件即可。
使用步骤:
----------------------------------------------------------------------
1)首先下载:http://files.cnblogs.com/jianyi0115/SmartQuery_v1.0.zip 并解压。
2) 将CodeArt.SharePoint.CamlQuery.dll和CodeArt.SharePoint.SmartQuery.dll加入GAC。
3)在站点的web.config的 <SafeControls>节点下添加webpart声明:
<SafeControl Assembly="CodeArt.SharePoint.SmartQuery, Version=1.0.0.0, Culture=neutral, PublicKeyToken=df96d56002e5fe16" Namespace="CodeArt.SharePoint.SmartQuery" TypeName="*" Safe="True" AllowRemoteDesigner="True" />
4)将示例查询布局用户控件 CodeArt_ExampleQueryLayout.ascx和CodeArt_ExampleQueryLayout2.ascx
复制到C:"Program Files"Common Files"Microsoft Shared"web server extensions"12"TEMPLATE"CONTROLTEMPLATES
5)进入> Web 部件库 > 新建 Web 部件 页面,添加CodeArt.SharePoint.SmartQuery.SmartQueryWebPart。
6)进行测试:示例控件是为 任务 列表开发的,因此,转到一个任务列表的AllItem.aspx页面,进入编辑模式,
添加 SmartQueryWebPart。
7)退出编辑模式,就可以看到效果了。
如何开发自己的查询布局控件:
----------------------------------------------------------------------------
1)查询布局用户控件可以是任意用户控件,只要实现了CodeArt.SharePoint.SmartQuery.ICamlProvider接口即可。
2)为了简化开发,用户控件可以从 CodeArt.SharePoint.SmartQuery.BaseLayoutControl继承,参考CodeArt_ExampleQueryLayout.ascx的代码:
<%@ Control Language="C#"
Inherits="CodeArt.SharePoint.SmartQuery.BaseLayoutControl,CodeArt.SharePoint.SmartQuery, Version=1.0.0.0, Culture=neutral, PublicKeyToken=df96d56002e5fe16"%>
<%@ Register Tagprefix="codeArt" Namespace="CodeArt.SharePoint.SmartQuery" Assembly="CodeArt.SharePoint.SmartQuery, Version=1.0.0.0, Culture=neutral, PublicKeyToken=df96d56002e5fe16" %>
<div>
<table>
<tr>
<td>
标题:
</td>
<td><codeArt:QueryControl runat="server" FieldName="标题" id="f1" ShowTitle="false" /></td>
<td>
截止日期:
</td>
<td> <codeArt:QueryControl runat="server" FieldName="截止日期" id="f2" ShowTitle="false"/></td>
<td>
分配对象:
</td>
<td> <codeArt:QueryControl runat="server" FieldName="分配对象" id="f3" ShowTitle="false"/></td>
<td>
优先级:
</td>
<td> <codeArt:QueryControl runat="server" FieldName="优先级" id="f4" ShowTitle="false"/></td>
<td>
<asp:Button runat="Server" Text="查询" ID="btn1" />
</td>
</tr>
</table>
</div>
说明:QueryControl表示一个查询字段,它会按照字段类型呈现不同的样式,如 文本框,下拉列表,时间选择,人员选择等。
3)如果要进行更高级的控制,可以重载BaseLayoutControl的QueryExpression属性,来实现自己的查询条件控制。
请参考CodeArt_ExampleQueryLayout2.ascx的代码:
<%@ Control Language="C#"
Inherits="CodeArt.SharePoint.SmartQuery.BaseLayoutControl,CodeArt.SharePoint.SmartQuery, Version=1.0.0.0, Culture=neutral, PublicKeyToken=df96d56002e5fe16"%>
<%@ Register Tagprefix="codeArt" Namespace="CodeArt.SharePoint.SmartQuery" Assembly="CodeArt.SharePoint.SmartQuery, Version=1.0.0.0, Culture=neutral, PublicKeyToken=df96d56002e5fe16" %>
<%@ Register Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> <%@ Register Tagprefix="Utilities" Namespace="Microsoft.SharePoint.Utilities" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Import Namespace="Microsoft.SharePoint" %>
<%@ Assembly Name="CodeArt.SharePoint.CamlQuery, Version=1.0.0.0, Culture=neutral, PublicKeyToken=43536cfde91ea799" %>
<%@ Import Namespace="CodeArt.SharePoint.CamlQuery" %>
<script runat="server">
/// <summary>
/// 创建查询表达式
/// </summary>
public override CamlExpression QueryExpression
{
get
{
CamlExpression expr = null;
QueryField title = new QueryField("标题", false);
QueryField des = new QueryField("说明", false);
if (txtTitle.Text != "")
expr = title.Contains(txtTitle.Text);
if (txtDes.Text != "")
expr = Append( expr , des.Contains( txtDes.Text ) );
return expr ;
}
}
/// <summary>
/// 链接查询条件
/// </summary>
/// <param name="expr1"></param>
/// <param name="expr2"></param>
/// <returns></returns>
CamlExpression Append( CamlExpression expr1 , CamlExpression expr2 )
{
if (expr1 == null)
return expr2;
else
return expr1 && expr2;
}
</script>
<div>
<table>
<tr>
<td>
标题:
</td>
<td>
<asp:TextBox runat="server" ID="txtTitle"></asp:TextBox>
</td>
<td>
说明:
</td>
<td> <asp:TextBox runat="server" ID="txtDes"></asp:TextBox></td>
<td>
<asp:Button runat="Server" Text="查询" ID="btn1" />
</td>
</tr>
</table>
</div>
--------------------------------------------
说明:SmartQuery采用CamlQuery类库实现查询条件的拼接,CamlQuery类库类库的使用参见压缩包里的CamlQuery_Manual.txt。
或参考以下链接:
WSS3.0开发--你还在为写CAML痛苦吗?
CodeArt.SharePoint.CamlQuery_0.9发布(源码)
4)布局控件开发好后,放到CONTROLTEMPLATES目录,然后到AllItem页面修改SmartQueryWebPart的LayoutControlPath属性为布局控件的虚拟路径,
如 ~/_CONTROLTEMPLATES/CodeArt_ExampleQueryLayout.ascx
下载 dll:http://files.cnblogs.com/jianyi0115/SmartQuery_v1.0.zip
另:SmartQueryWebPart的实现方式可以参考:
WSS3.0开发-过滤列表内容(1)
相关文章推荐
- WSS3.0开发-过滤列表内容(2)--一个增强的列表元数据查询webpart(SmartQueryWebPart)
- WSS3.0开发-过滤列表内容(2)--一个增强的列表元数据查询webpart(SmartQueryWebPart)
- WSS3.0开发-过滤列表内容(2)--一个增强的列表元数据查询webpart(SmartQueryWebPart)
- sharepoint 列表查询,一个增强的列表元数据查询webpart(SmartQueryWebPart)
- WSS3.0开发-过滤列表内容(1)
- WSS3.0开发-过滤列表内容
- 编写过滤器WebPart--过滤列表内容
- ASP.NET Aries 入门开发教程3:开发一个列表页面及操控查询区 推荐
- ASP.NET Aries 入门开发教程3:开发一个列表页面及操控查询区
- 定制内容查询Web部件(Customize Content Query WebPart)系列二 :定制常用新闻标题和条目格式外观
- 定制内容查询Web部件(Customize Content Query WebPart)系列一:概述
- 今天用sharepoint2010开发了一个可视WebPart,在WebPart中建一个Button和一个DataGrid,内容在DataGrid中显示出来。
- ASP.NET Aries 入门开发教程3:开发一个列表页面及操控查询区
- ASP.NET Aries 入门开发教程3:开发一个列表页面及操控查询区
- 一个通用WebPart查询列表
- ASP.NET Aries 入门开发教程3:开发一个列表页面及操控查询区_0
- SP2010开发和VS2010专家"食谱"--第四章节—列表定义和内容类型(3)--使用对象模型创建自定义内容类型
- SP2010开发和VS2010专家"食谱"--第四章节—列表定义和内容类型(6)--创建外部内容类型
- 面试题-Sharepoint里面如何开发一个webpart?
- iOS开发UI篇—使用UItableview完成一个简单的QQ好友列表(二)