组合控件开发

  前面写了一些关于自定义控件开发学习的知识,最近的自定义控件快要完成了,现在给大家说下我觉得值得注意的地方,自定义控件的开发在大多数情况下是对于别人原有控件的组合包装,还有些是对于已有控件的继承扩展。在界面的组合封装中难免想用到一些控件组合起来和对应界面的布局实现,在自定义控件后台中实现了Table、TableRow、TableCell 在此我们可以像在网页上面布局一样,同样来组合我们需要的控件。

  其次我们要筛选控件的父类对象(Control、WebControl、CompoiseControl)和我们需要实现的接口,如我们如果要实现名字空间,则必须继承INameContainer接口等。我们经常可能需要重载的方法有CreateChildControls(实现自己内部定义控件变量的实例化,将控件中已有的控件清除,并添加对应的控件到该控件中,在此应用Table布局和添加属性)、RenderControls(控制控件输出到页面中的内容),在大多数控件中我们可能需要实现用控件状态(ControlState)来保存控件的视图状态,这样在用户禁用ViewState的情况下控件任可以保存自身的状态信息。

  实现ControlState的必须首先申明需要控件状态,其次要重载LoadViewState、SaveViewState方法,在ViewState中的对象必须是可序列化的。

  今天想在自己的自定义控件中加入几个在客户端的图片按钮,找了好久没找到,。。。最后终于明白了,其实.NET在System.Web.Controls.UI命名空间中其实同样也实现了一套客户端的控件对象,调用者可以像调用服务器端控件一样来创建和加载客户端控件对象到指定控件中,如果前面已经注册了自己的脚本资源,同样可以定义这些客户端控件在客户端的事件,如点击时的响应等。前面已经说了关于注入JS脚本的方法,这里不再重复。要实现自定义控件的局部刷新事件,其实和我们页面上使用AJAX相同,主要用到了HTTPREQUEST对象。

  由于今天本本没带回来,没能结合自己的例子去讲,且里面有些可能有错误,希望各位看官批评指正。

 

你可能感兴趣的:(控件开发)