在ASP.NET中创建自定义控件初步(转)

      假如你有大量的asp.net页面,在其中你会要求访问者选择一个邮政编码。然后,基于这个邮编,显示与之相关的城市和省份。这项功能可以通过一个包含邮政编码的dropdownlist控件来组织,或者可以通过一个textbox控件来用于输入邮政编码。无论使用哪一种方式,只要访问者选取或者输入了一个邮政编码,你就需要将相应的城市和省份放在label控件中显示出来,有没有其它的方法可以实现此功能呢?
当然有,你可以自定义一个控件来实现。你可以创建一个包含相关的这些基本控件的自定义控件。然后通过设定该控件的属性值,可用来得到相关的邮政编码及其它信息。
  这次要在这个asp.net页面注册一个简单的用户自定义控件,然后以代码的方式和在asp.net页面表单内定义的方式定义一个这样的控件。在这个asp.net页面的顶端,你需要注册这个控件:
<%
  @register
   tagprefix="My"
   tagname="my_controls"
  src="../mycontrols.ascx"
%>
  其中tagprefix可以设置为任何你想要有代码中定义你的控件所用的名字,在定义控件时,这个属性和tagname属性一起使用,从而指出你正在创建一个这样的控件类型。src属性用来设定自定义控件的文件所在的位置。
  进行这样的定义之后,你就可以在代码中定义自己的控件了。如:
<my:my_controls
  id="My_controls_1"
  runat="server"
/>
  其中,My:my_controls标记名称就是在注册(register)标记中设定的tagprefixtagname属性的组合。之后,你可以为这个自定义控件提供一个名字,并指出该控件应该在服务器上执行。如果这个控件具有一些可写的属性的话,你可以在控件的定义中设置这些属性。如果控件有一个numlines属性的话,就可以这样来设置它:
<my:my_controls
  id="My_controls_1"
  numlines = 5
  runat="server"
/>
  或者也可以像下面这样在代码中进行设置:
my_controls_1.numlines=5
  在代码中自动将一个自定义控件实例化并添加到页面中,与标准控件的实例化过程没有太大的区别。具体如下:
dim mycontrol as usercontrol = loadcontrol("../mycontrols.ascx")
myform.controls.add(mycotrol)
  你将其中的变量标为一个usercontrol(自定义控件)数据类型。同时,在同一代码行上使用了loadcontrol方法,并将你的控件定义文件的路径传给这个方法。之后,你就具有一个自定义控件的实例化变量。然后,就可以像添加任何其他的控件那样将其添加到页面中。

 

出处:http://www.blueidea.com/tech/program/2003/1060.asp

posted on 2008-08-18 11:58  ringwang  阅读(393)  评论(0编辑  收藏  举报