[MOSS开发]:如何使用用户控件

     如果是纯手工开发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:后台代码如下:

ContractedBlock.gifExpandedBlockStart.gifCode
/// <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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/423567.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

shiro学习(12)No WebApplicationContext found:

java.lang.IllegalStateException: No WebApplicationContext found: no ContextLoaderListener or DispatcherServlet registered?org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:252) 解决 web.xml缺少了Spring监听器&#x…

Java 的Runnable和Callable的区别

Runnable和Callable的区别是&#xff0c;(1)Callable规定的方法是call(),Runnable规定的方法是run(). (2)Callable的任务执行后可返回值&#xff0c;而Runnable的任务是不能返回值得(3)call方法可以抛出异常&#xff0c;run方法不可以(4)运行Callable任务可以拿到一个Future对象…

Spring Boot----整合SpringCloud

首先比较一下Zookeeper和Eureka的区别&#xff1f; 1、CAP&#xff1a;C&#xff1a;强一致性&#xff0c;A&#xff1a;高可用性&#xff0c;P&#xff1a;分区容错性(分布式中必须有) CAP理论的核心是&#xff1a;一个分布式系统不可能同时很好的满足一致性&#xff0c;可用性…

[原创]利用Powerdesinger同步数据库的方法说明

本文主要介绍我在工作过程中如果利用PowerDesinger同步数据库设计PDM和物理数据库保持同步。PowerDesinger以下简称PD.我们经常在数据库生成后&#xff0c;在后续的开发中发现数据设计有遗漏&#xff0c;或者是少字段&#xff0c;或者是参照完整性不一致&#xff0c;那么我们都…

shiro学习(13):springMVC结合shiro完成认证

工具idea 先看看数据库 shiro_role_permission 数据 shiro_user shiro_user_role 数据 在pom.xml里面添加 <?xml version"1.0" encoding"UTF-8"?><project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3…

分布式环境下,怎么保证线程安全

转:https://blog.csdn.net/Faker_Wang/article/details/80798732 避免并发 在分布式环境中&#xff0c;如果存在并发问题&#xff0c;那么很难通过技术去解决&#xff0c;或者解决的代价很大&#xff0c;所以我们首先要想想是不是可以通过某些策略和业务设计来避免并发。比如…

用小程序·云开发两天搭建mini论坛丨实战

笔者最近涉猎了小程序相关的知识&#xff0c;于是利用周末时间开发了一款类似于同事的小程序&#xff0c;深度体验了小程序云开发模式提供的云函数、数据库、存储三大能力。关于云开发&#xff0c;可参考文档&#xff1a;小程序云开发。 个人感觉云开发带来的最大好处是鉴权流程…

shiro学习(14):springMVC结合shiro完成认证

工具idea 先看看数据库 shiro_role_permission 数据 shiro_user shiro_user_role 数据 在pom.xml里面添加 <?xml version"1.0" encoding"UTF-8"?><project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3…

mysql聚合函数rollup和cube

转:https://blog.csdn.net/liuxiao723846/article/details/48970443 一、with rollup&#xff1a; with rollup 通常和group by 语句一起使用&#xff0c;是根据维度在分组的结果集中进行聚合操作。——对group by的分组进行汇总。 假设用户需要对N个纬度进行聚合查询操作&am…

在C#里,如何执行cmd里的常用dos命令 (转)

http://blogger.org.cn/blog/more.asp?namenrzj&id4280 using System; using System.Diagnostics; namespace Tipo.Tools.Utility { /// <summary> /// 常用Dos命令操作 /// </summary> public class DosCommand { private Process processnull; pri…

Spring Boot----监控管理

用来监控spring 项目信息的 1、创建项目 1.1 启动项目 转载于:https://www.cnblogs.com/yanxiaoge/p/11400734.html

shiro学习(15):使用注解实现权限认证和后台管理

工具idea 先看看数据库 shiro_role_permission 数据 shiro_user shiro_user_role 数据 在pom.xml里面添加 <?xml version"1.0" encoding"UTF-8"?><project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3…

什么是索引?索引类型有几种,各有什么特点?

转发: 索引是对数据库表中一列或多列的值进行排序的一种结构&#xff0c;例如 employee 表的姓&#xff08;name&#xff09;列。如果要按姓查找特定职员&#xff0c;与必须搜索表中的所有行相比&#xff0c;索引会帮助您更快地获得该信息。 索引是一个单独的、物理的数据库结…

设置Netbeans 6.5为英文界面

进入netbeans 6.5/etc目录&#xff0c;编辑netbeans.conf文件&#xff0c;将其中的#command line switchs下面那行添加启动参数&#xff1a; -J-Duser.languagezh -J-Duser.countryUS变为&#xff1a;netbeans_default_options"-J-client -J-Xss2m -J-Xms32m -J-XX:PermSi…

用小程序·云开发打造功能全面的博客小程序丨实战

用小程序云开发将博客小程序常用功能“一网打尽” 本文介绍mini博客小程序的详情页的功能按钮如何实现&#xff0c;具体包括评论、点赞、收藏和海报功能&#xff0c;这里记录下整个实现过程和实际编码中的一些坑。 评论、点赞、收藏功能 实现思路 实现文章的一些操作功能&#…

shiro学习(16):使用注解实现权限认证和后台管理二

工具idea 先看看数据库 shiro_role_permission 数据 shiro_user shiro_user_role 数据 目录结构 在pom.xml里面添加 <?xml version"1.0" encoding"UTF-8"?><project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http…

Javascript玩转Prototype(一)——先谈C#原型模式

在《Javascript玩转继承&#xff08;二&#xff09;》中&#xff0c;我使用了原型继承法来实现Javascript的继承&#xff0c;那原型究竟奥秘何在。在这篇文章中&#xff0c;我就主要针对原型来展开讨论。 抛开Javascript&#xff0c;我们先来看我们熟悉的常规的面向对象语言。…

hive的row_number()、rank()和dense_rank()的区别以及具体使用

参考:https://blog.csdn.net/qq_20641565/article/details/52841345?locationNum5&fps1 2016年10月17日 20:05:21 阅读数&#xff1a;4931 row_number()、rank()和dense_rank()这三个是hive内置的分析函数&#xff0c;下面我们来看看他们的区别和具体的使用案例。 首先…

HDU 1176 免费馅饼 (动态规划、另类数塔)

免费馅饼 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 76293 Accepted Submission(s): 26722 Problem Description 都说天上不会掉馅饼&#xff0c;但有一天gameboy正走在回家的小径上&#xff0c;忽然天上掉…

shiro学习(17):easyui布局测试

工具sublime <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Document</title><link href"themes/black/easyui.css" rel"stylesheet" /><link href"themes…