动态加载用户控件的组件!(三)

原创 2004年08月19日 10:03:00

 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

    上一篇文章写到动态加载用户控件的简单应用

    页面是用来浏览信息的!但是更重要的是和用户交互,根据不同的需求提供不同的内容服务,这是一种服务或是一种更贴近用户的人性化。(又在胡言乱语了!^_^

动态加载叶面,根据不同的用户权限加载不懂的内容服务。根据用户的相应加载相应的内容服务。

还有另外一个应用就是做到页面与代码的分离。在vs2003里,一般ascxaspx文件,在刚建立的时候都直接跟一个cs文件关联。那么我们在写程序的时候就不能分开来做。作叶面和写后台代码的不能分开。为了能够做到作业面与作后台代码的能完全分开来,我们可以把后台的所有代码当作一个组件来做就可以了!这样一个不用跟cs文件关联的aspx叶面文件直接引用一个组件就可以了!那么组件可以加载不同的ascx文件最后组成一个完整的叶面。就这样一个项目的开发就像个机车制造厂一样组装不同的零件就有辆车出来了。软件也可以拿来组装,零件我们也可以订制,最后整体就可以出来了!(常常看别人的文章的时候怎么就觉得废话那么多,原来发现我废话也不少!^_^

好!让我们step by step ,就从不需要关联cs文件的aspx叶面开始吧!(在vs2005里,我新建aspx叶面的时候就直接没有cs文件关联。但是直接有个不完整类型隐藏起来了。怎么用基类就成为问题了!隐藏部分应该是继承了Page了!那么根据单继承的原则我们是不能在继承别的类型的了。这个问题有待研究。)

根据aspx叶面运行原理。叶面要跟服务端交互必须通过一个run at serverform标签才能行得通。因此我不要先来写个form组件,那么form就应该是个容器的形势来承载叶面所有要与服务端交互的元素,(容器太重要了,namespace也可以看作容器,只不过是不能放东西而已,是虚拟的容器)

1、做form容器组建:继承继承他就行了,注意一点就是唯一ID的问题。自己继承的可能该改变了ID,那么回传的时候就找不到了啊。切记!当然render叶面的时候是通过遍历所有form容器内所有的组件来一个个render出来。所以要改UniqueID。

示例一下:

using System;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.ComponentModel;

 

namespace Region.Controls {

   

    public class MyForm : System.Web.UI.HtmlControls.HtmlForm {

 

            public override string UniqueID {

            get {

                if (this.NoNameContainer && this.NamingContainer != this.Page ) {

                    return base.UniqueID.Substring(base.UniqueID.LastIndexOf(":")+1);

                } else {

                    return base.UniqueID;

                }

            }

        }

 

        protected override void RenderAttributes(HtmlTextWriter writer) {

            this. NoNameContainer = true;

            base.RenderAttributes (writer);

            this. NoNameContainer = false;

        }

       

        protected override void RenderChildren(HtmlTextWriter writer) {

            this. NoNameContainer = true;

            base.RenderChildren (writer);

            this. NoNameContainer = false;

        }

 

        private Boolean NoNameContainer = false;

    }

}

 

 

 

未完(持续)

C# WinForm中添加用户控件

有的时候默认提供的工具
  • haelang
  • haelang
  • 2014年11月01日 15:49
  • 3768

C# WinForm 封装自定义组件(控件)Dll

封装自定义控件很简单,没什么技术含量,这里通过封装自定义的数字文本框实例简单总结一下: 【1】新建自定义控件库 -- Windows Forms Control Library 【2】...
  • aoshilang2249
  • aoshilang2249
  • 2014年11月18日 20:16
  • 4810

C# 窗口和控件的操作

一。 窗口和窗口之间传值 1第一种方法用静态变量 在form1里定义 public static string  passvalue;在form2里赋值; 2第二种方法用new的参数 定义form2时...
  • gaiazhang
  • gaiazhang
  • 2016年09月02日 16:52
  • 737

COM组件开发(三)——类厂对象

COM类厂对象的实现         COM客户程序要使用COM对象是通过COM库创建而来的,而实际上COM库是调用COM对象的类厂来创建的。COM类厂对象也是一个COM对象,所以它也从IUnkno...
  • q5806622
  • q5806622
  • 2015年02月04日 19:32
  • 2414

用户控件&自定义控件----.Net再学

开始学习.Net到现在两年了快,开始学习java 也有大半年了,中间做项目,又开始.Net的学习。这次做.Net项目,后台代码敲的不是太多,重点放在了UI上,这也是这篇博客要写的内容有关,做UI就少不...
  • wangyongxia921
  • wangyongxia921
  • 2015年01月30日 22:42
  • 1258

Android基本界面控件

本文转自:基本界面控件 大多数的界面控件都在android.view和android.widget包中,android.view.View为他们的父类,还有Dialog系列,android.ap...
  • qq_27650777
  • qq_27650777
  • 2016年06月28日 14:52
  • 2140

Chrome学习笔记(三):UI组件,皮肤引擎

原创文章,转载请注明:转载自Soul Apogee 本文链接地址:Chrome学习笔记(三):UI组件,皮肤引擎 —— 控件库 这篇文章是接着上篇文章继续聊的,Chrome的代码实在太多,每一...
  • wanfengnianhua
  • wanfengnianhua
  • 2017年04月25日 18:56
  • 256

【Java Swing探索之路系列】之四:Java Swing用户界面组件(一)

作者:郭嘉 邮箱:allenwells@163.com 博客:http://blog.csdn.net/allenwells github:https://github.com/AllenWel...
  • AllenWells
  • AllenWells
  • 2015年06月30日 13:58
  • 3428

组件、控件和插件的区别

组件、插件、控件的区别 控件:是编程中用到的,按钮就算是一个控件,窗口也是等等 组件:是软件的一部分.软件的组成部分. 插件:网页中用到的,flash插件,没有它浏览器不能播放flash. ...
  • haiross
  • haiross
  • 2014年03月31日 13:33
  • 23237

DevExpress 用户控件 分页(上)

说明:使用用户控件分页,完成后,使用时非常简单,数据绑定,调用自己写的一个事件就OK了 前期准备工作: (1)添加一个用户控件 命名PageCtrl (2)打开代码:   ...
  • u013816709
  • u013816709
  • 2015年04月29日 14:00
  • 3537
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:动态加载用户控件的组件!(三)
举报原因:
原因补充:

(最多只允许输入30个字)