之前一直做SharePoint2010开发,最近转向了2007开发,感觉两者开发时有很多地方不一样,我现在接触到2007开发项目里面使用Module去加载Application Page,而在Application Page里面写了很多的后台代码,用于实现业务逻辑,项目里面很少用到UserControl 和WebPart,即使用了webpart 也在Webpart后台自定义了很多服务器控件。开发过2010后看到这种开发模式顿时晕了,觉得开发周期应该比较慢,不然微软在2010版本也不会加入virtual webpart了。 最近练习了一下,想借用开发MOSS2010的模式去开发MOSS2007,今天先介绍SharePoint2007 WebPart加载UserControl.这篇文章仅仅属于入门级,请大师们略过。。。

个人觉得SharePoint里面应该尽可能的多用UserControl去实现业务逻辑,数据展现,而用WebPart去加载这些UserControl, 再用Application Page加载WebPart,这只是我个人的理解。

好了进入正题,2007 web part工程里面没有UserControl,但是web application 工程里面可以创建UserControl,我们可以把web app工程中的UserControl copy 过来。这样可以搭建好一个简单的架构。

我把UserControl放在~/_CONTROLTEMPLAGT/WPUserControls下面,CONTROLTEMPLAGT文件夹是专门存放UserControl的地方,而WPUserControls文件夹是用于专门存放本项目使用的UserControl.

搭建好WebPart工程框架过后注意修改工程Debug属性,将工程部署到指定的站点下面。

开始开发简单的UserControl,不过在UserControl的ascx文件前面应该加一个程序集的应用声明,不然部署后会报“不能加载XXX类型”错误,如下图:

这里的程序集的引用声明是用reflect或者站点根目录下web.config文件中SafeControl节点copy 过来的。

如果想要在UserControl中使用SharePoint服务器控件则需引用

<%@ Register TagPrefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls"
Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>

复制过来的UserControl需要修改命名空间,我这里的命令空间是:VeloxWebPart.Templates.CONTROLTEMPLATES.WPUserControls, ascx,ascx.cs和ascx.designer.cs的命名空间都需要修改。

创建并设置好UserControl后,需要将usercontrol绑定到webpart上,绑定代码如下:

protected override void CreateChildControls()
{
try
{
base.CreateChildControls();
//string strUrl = "~/webParts/WebUserControl1.ascx";
string strUrl = "~/_CONTROLTEMPLATES/WPUserControls/UCTopMenu.ascx";
Control control = this.Page.LoadControl(strUrl);
this.Controls.Add(control);
}
catch (Exception ex)
{
this.Controls.Add(new LiteralControl(ex.Message));
} }

然后部署整个工程,将dll添加到GAC中,在页面里面添加创建的webpart,就可以看到效果了。

当然代码里面UserControl的路径可以让管理员自己输入,即站点管理员可以自定义页面的布局。这里后期补充。

SharePoint2007使用WebPart加载UserControl的更多相关文章

  1. web页面动态加载UserControl,并调用用户控件中的方法来初始化控件

    1,HTML页 头部注册: <%@ Register Src="~/WorkLog/WorkLogNewV1/UserControl/CeShiBu.ascx" TagPre ...

  2. C#中,用户控件UserControl里面用Panl加载UserControl,并实现利用委托互相传值

    用户控件主窗体结构:左侧树形菜单,右侧Panl: 根据点击的菜单节点,panl里面选择性加载某一个子窗体用户控件,并传值给子窗体: 反之,在子窗体进行相应的操作之后,传值给主窗体,触发主窗体的刷新. ...

  3. UserControl 加载动画

    效果:实现加载UserControl动画效果 cs代码如下 public class BaseModuleView : UserControl { private TranslateTransform ...

  4. 用MVVM模式开发中遇到的零散问题总结(5)——将动态加载的可视元素保存为图片的控件,Binding刷新的时机

    原文:用MVVM模式开发中遇到的零散问题总结(5)--将动态加载的可视元素保存为图片的控件,Binding刷新的时机 在项目开发中经常会遇到这样一种情况,就是需要将用户填写的信息排版到一张表单中,供打 ...

  5. 【winform】基于UserControl实现webBrower组件时html页面元素加载及onclick事件监听实现

    [背景]基于System.Windows.Forms.UserControl实现的webBrower组件在html内使用window.external调用winform事件失败. [解决思路]借助wi ...

  6. Windows.Forms Panel 动态加载用户控件 UserControl

    创建好一个Windows Forms程序,在创建好的程序中Form1添加一个Panel控件 如图:

  7. WPF自定义控件与样式(11)-等待/忙/正在加载状态-控件实现

    一.前言 申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐步发布的等,若有不明白的地方可以参考本系列前面的文章,文末附有部分文章链接. 本文主要有三种实现方式 ...

  8. SharePoint 2013 新建项目字段自动加载上次保存值

    1.点击进入NewForm.aspx页面,编辑页面,插入Script Editor WebPart,如下图: 2.插入后如下图,拖动AutoRecord WebPart到脚本编辑器上面,防止因为加载顺 ...

  9. Winform开发框架之客户关系管理系统(CRM)的开发总结系列4-Tab控件页面的动态加载

    在前面介绍的几篇关于CRM系统的开发随笔中,里面都整合了多个页面的功能,包括多文档界面,以及客户相关信息的页面展示,这个模块就是利用DevExpress控件的XtraTabPage控件的动态加载实现的 ...

随机推荐

  1. 把jmeter获取到的信息存到本地文件

    1.jmeter使用正则表达式提取器,获取到响应信息,把获取到的响应信息写到本地文件 2.添加后置Bean Shell ,写入以下脚本 3.打开本地文件查看,写入成功 脚本内容如下: FileWrit ...

  2. SpringBoot 学习教程(二):示例

    发布方式 构建Jar包,cmd命令行运行Spring Boot程序 第一步:在pom.xml中将packing节点值修改为jar,如下面加粗部分: <groupId>com.example ...

  3. 使用charles过滤网络请求

    1.对网络请求进行过滤,只监控向指定目录服务器上发送的请求 有以下方法: (1)在Structure视图或者Sequence视图的Filter 栏中填入需要过滤出来的关键字(适合临时性封包过滤) 或者 ...

  4. iOS MJExtension的使用

    前言: MJExtension是iOS的字典装模型的一个第三方框架.相对于JSONKit和SBJson相比MJExtension更简单易用.功能更强大. 安装: 使用CocoaPods导入(Cocoa ...

  5. 各种15min(启动、横盘、破位)样例

    15min-m20=day m1.5 15min-m60=day m5 15min-m125=day m10 15min-m260=day m20 1.2017年6月8日 360  + 2018年11 ...

  6. 北京大学Cousera学习笔记--2-计算导论与C语言基础-第一讲.计算机的基本原理-图灵机

    有限状态读写头从一个初始状态开始,对存储器上的输入数据进行读或写操作,经过有限步操作之后停机,此时存储器上的输出数据就是计算结果 (1) 图灵机的构成: 1.一条存储带:双向无限延长:上有一个个的小方 ...

  7. 获取Type的三种方式

    using System;using UnityEngine; public class Type_Test : MonoBehaviour{    private void Awake()    { ...

  8. C# 将文件夹中文件复制到另一个文件夹

    p{ text-align:center; } blockquote > p > span{ text-align:center; font-size: 18px; color: #ff0 ...

  9. 编程规范(初尝ES6与webpack)

    //针对ES6规范(第1-5条)start1.块级作用域let/const取代var:在let和const之间,建议优先使用const,尤其是在全局环境,不应该设置变量,只应设置常量. 2.解构赋值1 ...

  10. svn基础了解

    Apache Subversion 通常被缩写成 SVN,是一个开放源代码的版本控制系统 Subversion(SVN) 是一个开源的版本控制系統, 也就是说 Subversion 管理着随时间改变的 ...