• 如何使用SmartQueryWebPart


    SmartQuery是一个WSS(MOSS)列表查询解决方案,可以给WSS的所有列表添加字段查询的功能

    使用步骤:

    1)请先到:http://www.cnblogs.com/KimhillZhang/archive/2009/07/24/1530299.html处下载压缩文件;

    ----------下面的操作跟添加一个Web Part操作是一个样的;-----------

    2)CodeArt.SharePoint.CamlQuery.dllCodeArt.SharePoint.SmartQuery.dll加入GAC

    3
    )在站点的web.config <SafeControls>节点下添加webpart声明:

    只是要在SafeControls节点下添加 AllowRemoteDesigner="True"
    4
    )将示例查询布局用户控件 CodeArt_ExampleQueryLayout.ascxCodeArt_ExampleQueryLayout2.ascx

    复制到

    5
    )进入> Web 部件库 > 新建 Web 部件   页面,添加CodeArt.SharePoint.SmartQuery.SmartQueryWebPart

    6
    )进行测试:示例控件是为 Student 列表开发的,因此,转到一个任务列表的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
    )如果要进行更高级的控制,可以重载BaseLayoutControlQueryExpression属性,来实现自己的查询条件控制。

    请参考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

    4
    )布局控件开发好后,放到CONTROLTEMPLATES目录,然后到AllItem页面修改SmartQueryWebPartLayoutControlPath属性为布局控件的虚拟路径,
    ~/_CONTROLTEMPLATES/CodeArt_ExampleQueryLayout.ascx
     

    转载:jianyi - 博客园

  • 相关阅读:
    神经网络回顾-感知机
    遗传算法杂记
    差分进化算法DE和粒子群算法PSO
    遗传算法GA
    Caffe学习 五 conv_layer与im2col
    Selenium
    Selenium
    Selenium
    Selenium
    Selenium
  • 原文地址:https://www.cnblogs.com/KimhillZhang/p/1530339.html
Copyright © 2020-2023  润新知