频道直达 - 学院 - 下载 - 交易 - 特效 - 字库 - 手册 -排名-工具- 繁體
网页教学网站开发 设为首页
加入收藏
联系我们
建站搜索: 常用广告代码   用户注册 | 用户登陆
您当前的位置:中国建站之家 -> 网站开发设计技术教程 -> Asp.Net教程 -> 动态加载用户控件的组件!

动态加载用户控件的组件!

作者:未知  来源:转载  发布时间:2005-7-20 10:18:00  发布人:acx

减小字体 增大字体

我们写用户控件的目的就是放到页面中去。根据不同的条件,我们可以改变加载的用户控件!

其实原理就是MasterPage的原理。这个MasterPage会在vs2005中提供,但是现在也可以实现。

在我的项目中就用到:



MasterPage就四个类,其中容器就动态加载用户控件。这种功能在vs2005中将无处不在。

下面简单介绍一下动态加载叶面组件:

我们只需要改变用户组件的地址就可以动态改变加载的用户组件了。

在程序中动态改变SkinPath就可以了。

组件源码如下:

using System;
//using System.Drawing;
using System.Collections;
using System.Collections.Specialized;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;
using System.IO;
using System.Web.Security;
using Region.Components;

namespace Region.Controls {

[ParseChildren(true)]
/// <summary>
/// 页面组件,从用户组件获取
/// </summary>
public abstract class SkinnedControl : WebControl, INamingContainer {

string skinFilename = null;
string skinName = null;
string skinPath;

// string returnURL = null;

/// <summary>
/// 添加子组件
/// </summary>
protected override void CreateChildControls() {
if(SkinPath == null || SkinPath == "" || SkinPath.Trim() == "")
return ;
Control skin;
skin = LoadSkin();
InitializeSkin(skin);
Controls.Add(skin);
}

/// <summary>
/// 获取摸板组件
/// </summary>
/// <returns>组件</returns>
protected Control LoadSkin()
{
Control skin;
try
{
skin = Page.LoadControl(SkinPath);
}
catch (FileNotFoundException)
{
throw new Exception("找不到文件:[ " + SkinPath + " ] .");
}
return skin;
}

/// <summary>
/// 初始化组建摸板
/// </summary>
/// <param name="skin">组件</param>
protected abstract void InitializeSkin(Control skin);


/// <summary>
/// 用户组件名称
/// </summary>
public string SkinFilename
{
get
{
return skinFilename;
}
set
{
skinFilename = value;
}
}

/// <summary>
/// 组件名称
/// </summary>
protected string SkinName
{
get
{
return skinName;
}
set
{
skinName = value;
}
}

/// <summary>
/// 用户组件相对路径及组件名称
/// </summary>
public string SkinPath
{
get
{
return skinPath;
}
set
{
skinPath = value;
SkinFilename = value.TrimStart('/');

}
}




}
}


比如我的一个应用:

switch (context.PageId)
{
case "1_1" :
base.SkinPath = "~/Themes/SignManager/TermList.ascx";
break ;
case "1_1_1" :
base.SkinPath = "~/Themes/SignManager/TermEdit.ascx";
break ;
case "1_2" :
base.SkinPath = "~/Themes/SignManager/MemberList.ascx";
break ;

case "1_2_1" :
base.SkinPath = "~/Themes/SignManager/MemberEdit.ascx";
break ;
case "2_1" :
base.SkinPath = "~/Themes/SignManager/CardSend.ascx";
break ;
case "3_1" :
base.SkinPath = "~/Themes/SignManager/MemberNoEdit.ascx";
break ;
case "4_1" :
base.SkinPath = "~/Themes/AcountEdit.ascx";
break ;
default :
base.SkinPath = "";
break;
}



基于组建的开发,我们可省去叶面上很多重复性的地方。只需在重复叶面的地方引用组件就可以了

比如:



这样我们就可以 以用户组件为元素,组件不同的叶面。叶面也可以重用!



将本文收藏到QQ书签与更多好友分享
[打 印]
[] [返回上一页] [收 藏]
∷相关文章评论∷    (评论内容只代表网友观点,与本站立场无关!) [更多评论...]
精彩推荐
热门文章
· 注册码大全二
· 注册码大全四
· 注册码大全一
· 要10G免费网络硬盘的请进..
· 通过google 赶快来赚美金..
· 注册码大全十
· 头像-qq头像(qq新头像)4..
· 让你轻松架设FTP服务器1..
· 注册码大全三
· 梦幻背景图片7
· 卡通动物图片6
· 网页制作素材-按钮素材2..
· 让你轻松架设FTP服务器5..
· 风景图片8
· 注册码大全九
· 让你轻松架设FTP服务器2..
关注此文读者还看过
· ASP汉字转拼音函数
· 用js绘图
· Google PR数字背后的含意..
· ASP.NET 打造互联网未来..
· ASP+培训教材(1)
· 设置 Macromedia Flash ..
· 在Dreamweaver中插入背景..
· Flash做卡通动画的经验和..
· Web网站的错误控制
· 企业网站的推广漫谈
· 二十八条改善 ASP 性能和..
· 实战PHP/GTK
· Photoshop简单绘制卡通人..
· 腾讯上半年净利增八成 无..
· ASP生成XBM图可用作验证..
· 绘制SD娃娃 [8]
相关文章
· ASP.net中动态加载控件时一..
· 《简单实现Crystal Report动..
· 发现一个.Net中动态加载控件..
· 动态加载用户控件的组件
· 动态加载用户控件的组件!(..
· 如何动态加载multiline的te..
· 动态加载用户控件的组件!(..
· ASP.NET中实现模版的动态加..
· 服务器端动态加载DataGrid控..
关于本站 - 网站帮助 - 广告合作 - 下载声明 - 友情连接 - 网站地图 - 人才招聘
网站合作、内容监督、商务咨询:QQ: 9576619
Copyright ? 2005--2008 中国建站之家版权所有
粤ICP备05092265号