如果是纯手工开发web part,其实还是比较困难的,因为这种类型的web part是以类库的形式出现,没有可视化的界面,完全由代码写出来,包含控件的样式,属性,事件等等。开发过自定义控件的朋友可能会感受深一些,所以在asp.net应用程序中,开发员从来不开发自定义控件也非常常见。这种纯代码的开发方式的优点是灵活性强,而且部署方便,它只会包含一个DLL。但如果界面特别复杂的话,要想实现还是有一定难度的,搞不好因为一条简单的HTML代码的错误,会导致整个控件样式的出错。

在MOSS开发中,还好微软支持直接嵌套已经创建好的用户控件。不过不能直接用,它需要一个容器控件来包含它。这里的容器控件可以自己写,也可以用已经非常成熟的QuickPart。下面我将以一个小小的搜索列表的例子来说明如何嵌套用户控件到MOSS网站中。

列表说明:我创建了一个列表,共有两列:标题和解决方案。内容如下图:

需求:创建一个web part,包含一个文本框和一个搜索按钮,实现列表的标题搜索。

第一:部署容器控件QuickPart。

1):QuickPart组件可以上网上搜索下,然后把它部署到网站bin目录;

2):修改配置文件,注册容器控件;

<SafeControl Assembly="QuickPart, Version=1.0.0.0, Culture=neutral, PublicKeyToken=2d0bb71b2dd16f9e"
 Namespace="Microsoft.PRC.SharePoint" TypeName="*" Safe="True" />

3):把新增加的控件导入到库中,QuickPart总共会有两个控件:

1>:Microsoft.PRC.SharePoint.ComsumerQuickPart;

2>:Microsoft.PRC.SharePoint.ProviderQuickPart。

第二:创建用户控件。一般在创建web part时,我们创建的是web part工程,现在要使用用户控件,所有我们要创建一个web application项目,然后在里面创建一个名为CostomList.ascxC的用户控件,实现搜索当前网站的列表信息。从工具箱中分别加入一个GridView,一个TextBox,一个Button,

1:前台部分代码如下:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
    <Columns>
        <asp:TemplateField HeaderText="标题">
            <ItemTemplate>
                <a href ='DispForm.aspx?ID=<%# Eval("ID")%>'>
                <%# Eval("Name") %>
                </a>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>
<asp:TextBox ID="tbKey" runat="server"></asp:TextBox>
<asp:Button ID="btnSearch" runat="server" onclick="btnSearch_Click"
    Text="搜索3" />

代码说明:其中的字段:ID,Name是创建列表时自动生成的,如果不清楚的话,可以先将AutoGenerateColumns设置成true,看查询内容的全部字段内容,然后根据需要选取自己需要的内容即可。

2:后台代码如下:

Code
/// <summary>
        /// 获取列表的数据
        /// </summary>
        /// <returns></returns>
        private void  GetData()
        {
           
            SPSite site = SPContext.Current.Site;
            SPWeb web = site.OpenWeb();
            SPList list = web.Lists["我的自定义列表"];
            SPQuery query = new SPQuery();
            //检索所有的项目
            query.ViewAttributes = "Scope='RecursiveAll'";
            string cmal = string.Format("<Where><Contains><FieldRef Name='Title' /><Value Type='Text'>{0}</Value></Contains></Where>", this.tbKey.Text.ToString());
            query.Query = cmal;
            int i = 1;
            query.RowLimit = 1;
            do
            {

SPListItemCollection listItems = list.GetItems(query);
                this.GridView1.DataSource = listItems;
                this.GridView1.DataBind();
               
                query.ListItemCollectionPosition = listItems.ListItemCollectionPosition;

i++;

}
            while (query.ListItemCollectionPosition != null);
        
        }
        /// <summary>
        /// 搜索事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnSearch_Click(object sender, EventArgs e)
        {
            this.GetData();
        }

代码说明:

1:SPQuery是MOSS中的一个数据查询方法,SPQuery有三个重要的属性:

1):ViewAttributes:设置检索的列表的范围(Scope),是否包含子文件(Default、Recursive、RecursiveAll和FilesOnly)。

2):RowLimit:限制返回的行数,类似于SQL中的select top n。

3):ListItemCollectionPosition,与分页信息相关。

2:SPSite:web 应用程序下的网站集;

3:SPWeb:网站集下的每一个站和子站点,要想访问一个列表就需要从SPWeb对象开始。

4:SPList:列表对象,上面创建的列表就属于这个范围。

第三:部署创建的用户控件。为了部署,调试方便,我们可以在编译项目时让它自动部署到MOSS网站:

1:复制生成的DLL文件到网站BIN目录,方法是,项目属性-生成-输出目录,如下图:

2:复制CostomList.ascx文件到Inetpub"wwwroot"wss"VirtualDirectories"20983"wpresources,方法是:项目属性-生成事件,如下图:

第四:在要编辑的页面中添加ProviderQuickPart控件,在用户控件列表中就能看到我们刚才创建的用户控件了,选中添加就行了。

总结:上面的就是如果嵌套用户控件的过程,比起纯代码开发的web part还是容易不少,毕竟是可视化操作,而且以前的asp.net知识都可以用上,具有不容易出错,方便调试的优点。

转载于:https://www.cnblogs.com/ASPNET2008/archive/2009/01/07/1371101.html

[MOSS开发]:如何使用用户控件相关推荐

  1. ASP.NET开发:在用户控件中添加属性

    在WEB开发中,可重用的代码我们可以把它写成一个通用模块供需要的地方来引用.本文就是介绍在ASP.NET的web编程时,如何在用户控件中添加属性,实现这种方法:举例说明详解. 在WEB开发中经常有一些 ...

  2. [MOSS开发]:通过简单BUG跟踪Demo阐述用户控件对列表的操作

    下面的文章我想以一个具体的BUG跟踪Demo来说明MOSS的具体应用,这里面会应用到下面的知识点: 1:用户组,用户的创建,权限分配: 2:列表的概念以及创建: 3:利用用户控件来完成表单的增加加功能 ...

  3. 开发和使用Web用户控件

    在 ASP.NET 的开发中 Web 用户控件的开发和使用是一项必不可少的技术,在对这项技术的一番研究后写下了这篇随笔,不过确实担心这么初级的东东放到原创首页上会被拍砖头. 1.简介 2.创建 Web ...

  4. (转) ASP.NET 2.0:使用用户控件和定制的Web部件个人化你的门户网站(二)

    Web部件目录 我们已经见过了如何在 WebPartZones 控件中事先放入Web部件.你还可以用另外一种方法完成这个功能,那就是允许用户在运行时添加新的Web部件.通过使用 CatalogZone ...

  5. Asp.net 2.0 自定义控件开发专题讲解[为用户控件增加DataSource属性, 能够自动识别不同数据源](示例代码下载)...

    (一).  概要 开发<数据绑定用户控件>, 要实现一个DataSource属性, 并且能够自动识别不同的数据源, 如: ArrayList, DataTable, DataSet, XM ...

  6. Asp.net控件开发学习笔记(三)-控件开发基础

    封装      在asp.net中,控件被分为两类.用户控件和自定义服务器控件.前者就是我们经常用来将一些可复用的内容封装成的.ascx文件.这里主要研究后者. 创建自定义服务器控件      创建自 ...

  7. 在asp.net中为Web用户控件添加属性和事件

    在90年代初,Microsoft为Web程序员提供的 Active Server Pages(ASP)革命性地改变了Web的编程.它可以利用十分易用的模型在Web服务器上动态生成HTML,并且很容易的 ...

  8. ASP.NET重用代码技术 - 用户控件技术

    作者: 苏红超 使用ASP.NET中的代码绑定技术来使得代码重用变得简单可行.我们发现,利用代码绑定技术我们可以容易的将我们的代码和内容分离开来,利用它可以建立可重用的代码,只是这种技术本身也存在着一 ...

  9. 一步一步学Silverlight 2系列(10):使用用户控件

    概述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, ...

最新文章

  1. Python:Scrapy的安装和入门案例
  2. 【c语言】蓝桥杯算法提高 温度转换
  3. 深度学习入门指北——从硬件到软件
  4. U-Boot移植教程之一:U-Boot分析与启动过程
  5. 利用 Chef 在 Red Hat Enterprise Linux 上自动化部署 Mariadb Galera Cluster
  6. python中循环迭代语句_python条件与循环-循环
  7. php errorcode,php中pdo错误处理方法详解
  8. 深度linux更新卡,深度操作系统已发布更新 新增“ apt-get custom-update”命令行
  9. c++ 模拟拖动_2020电工(中级)模拟考试题及电工(中级)模拟考试题库
  10. mkdir: Permission denied: user=root, access=WRITE
  11. 问题 E: Search Problem (II)
  12. 杨国勋:云计算颠覆现有市场和产业格局
  13. swfobject.js
  14. php 根据身份证计算年龄
  15. 【网页设计大作业】:端午主题(HTML+CSS+JavaScript)——中国传统文化(6页)
  16. linux 发送at指令,AT指令发送短信流程
  17. windows方法和属性
  18. 传感器技术-光电式传感器(学习笔记十)
  19. 《俪影2046》v2.09 完美破解
  20. CentOS7.2下一键安装Openstack

热门文章

  1. [css] z-index有时不起作用的原因是什么?怎么解决?
  2. [js] 异步请求重试策略有哪些呢?
  3. 工作285:判断绑定逻辑
  4. 前端学习(2663):vue3.0的todolist
  5. 前端学习(2327):angular之双向绑定
  6. 前端学习(2158):webpack配置文件的分离
  7. 前端学习(1540):案例分析
  8. 前端学习(1032):jquery插件-瀑布流
  9. java学习(157):线程的引入
  10. 最近写的一个qt应用软件