控件的元素
1.子控件
(1)一般自定义控件由一些基本的webcontrol组成的,可以实现某些特定的需要
2.属性
(1)在使用自定义控件的时候设置的参数(比如TextBox的Text),参数可用于对子控件的设置等
3.事件
(1)当自定义产生某些值变化时,可以触发,在使用控件的地方执行某些别的处理
4.常规函数
(1)用于控件内部的一些处理
5.重载函数
重载控件基类的方法,主要用于对子控件的定义与渲染。以下是几个比较常用的重载函数。
OnLoad:控件加载后调用,在这里可以做一些比较重要的权限验证,或者只是简单的处理。
Controls:获取存放子控件的容器
CreateChildControls:这个比较重要,在自定义控件中使用的子控件,需要在这里进行实例化,并将它们Add到容器中
OnPreRender:在自定义控件渲染到页面前调用,如果相对一些子控件做最后的样式调整或者向页面添加一些JS方法等,在这里可以进行
Render:最后一步将所有定义的子控件渲染到页面上
这里有个需要注意的地方:
(1)页面首次加载:OnLoad->CreateChildControls->OnPreRender->Render
(2)自定义控件触发事件加载:CreateChildControls->OnLoad->执行触发事件->OnPreRender->Render
也就是说,如果自定义控件上的一些显示需要根据执行完触发事件更新的话,不能在CreateChildControls处理需要在之后的OnPreRender或Render中处理。
下面来简单说一下,如果要做一个常用的分页控件,该怎么来实现
1.子控件
根据经验,一般一个分页控件包含如下一些元素
(1)每页显示的数据条数,比如(20,50,100),可以使用Button
(2)显示总记录数的文字区域,可以使用Literal
(3)上页或下页按钮,可以使用LinkButton
(4)分页组按钮,显示一些具体页数的(比如1,2,3..10),可以使用LinkButton
(5) 直接跳转功能,需要一个TextBox与一个LinkButton
2.属性
大概可以设置的一些属性
(1)如果支持每页显示1000的话,是否需要此子控件
(2)分页组的具体长度,可以1-5,也可以1-10等
(3)按钮的文字说明,比如增加英文与中文的区分
3.事件
主要用于自定义控件与外界的交互,比如
(1)每页显示条数发生变化,列表需要重新加载
(2)切换上一页或下一页时,列表需要重新加载
(3)直接跳转到某一页时,列表需要重新加载
4.常规函数