之前一直做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. 2018-2019-2 网络对抗技术 20165336 Exp2 后门原理与实践

    2018-2019-2 网络对抗技术 20165336 Exp2 后门原理与实践 1.基础问题回答 (1)例举你能想到的一个后门进入到你系统中的可能方式? 下载自己不熟悉的软件时含有病毒. 网络钓鱼, ...

  2. [ionic3.x开发记录]参考ionic的float-label动效,写一个项目内通用的input组件,易扩展

    上图: module: import {NgModule} from "@angular/core"; import {CommonModule} from "@angu ...

  3. mysql(七)

    多表查询: 显示内连接: select 字段列表 from 表名1  inner  join 表名1 on  条件 * inner 可忽略 select * from student inner  j ...

  4. 2017(2)数据库设计,数据库设计过程,ER模型,规范化理论

    试题二(共 25 分〉 阅读以下关于系统数据分析与建模的叙述,在答题纸上回答问题1 至问题 3. [说明] 某软件公司受快递公司委托,拟开发一套快递业务综合管理系统,实现快递单和物流信息的综合管理.项 ...

  5. 001-JUnit之断言assert

    一.简介以及pom JUnit4.4引入了Hamcrest框架,Hamcest提供了一套匹配符Matcher,这些匹配符更接近自然语言,可读性高,更加灵活: 使用全新的断言语法:assertThat, ...

  6. vue Baidu Map --- vue百度地图插件

    vue Baidu Map 官网:https://dafrok.github.io/vue-baidu-map/#/zh/start/installation javascript 官网:http:/ ...

  7. PHP生成当前月份包括最近12个月内的月份

    直接上代码: $time=array(); $currentTime = time(); $cyear = floor(date("Y",$currentTime)); $cMon ...

  8. C#6.0,C#7.0新特性

    C#6.0新特性 Auto-Property enhancements(自动属性增强) Read-only auto-properties (真正的只读属性) Auto-Property Initia ...

  9. zookeeper注册与发现

    pom.xml添加如下引用: <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId ...

  10. 用Python3实现的Mycin专家系统简单实例

    from sys import stderr ######################### TRUE = 1 #定义返回值 FALSE = 0 FACT_LENGTH = 9 #'''前提与结论 ...