用户控件的好处有许多,比如解决了代码的可重用性,简化了代码等等,打包自己比较经常使用的控件组合为WEB用户控件,提供外部调用的属性接口和方法,将会为以后的工作带来许多方便。文章难度为初级。
本文以一个两级联动的DropDownList的组合用户控件为例子,描述如何提供简单的外部属性访问,提高代码的复用性。本文使用了ajax框架anthem.NET和企业库,但不是本文论述的重点。
使用的环境为:VS2005,anthem.NET,Enterprise Lib 2003
按惯例,先给出效果图:
下面是步骤:
1. 添加新的Web用户控件WebUserControl.ascx
2. 拖入两个DropDownList控件,如效果图那样做好布局(按钮和文本框是用户控件以外的),注意设置下DropDownList1的AutoPostBack=true(在Anthem.NET框架中就是设置AutoCallBack=true)用户控件的代码如下:
- public partial class UserControls_WebUserControl : System.Web.UI.UserControl
- {
- public string List1
- {
- get { return DropDownList1.SelectedValue; }
- set { DropDownList1.SelectedValue = value; }
- }
- public string List2
- {
- get { return DropDownList2.SelectedValue; }
- set { DropDownList2.SelectedValue = value; }
- }
- protected void Page_Load(object sender, EventArgs e)
- {
- if (!IsPostBack)
- {
- List1Bind();
- DropDownList1.UpdateAfterCallBack = true;
- }
- }
- protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
- {
- List2Bind();
- DropDownList2.UpdateAfterCallBack = true;
- }
- /// <summary>
- /// 绑定DropDownList1
- /// </summary>
- private void List1Bind()
- {
- //数据绑定代码
- }
- /// <summary>
- /// 绑定DropDownList2
- /// </summary>
- private void List2Bind()
- {
- //数据绑定代码
- }
- }
3.然后新建一个web窗体test.aspx,拖入刚才新建的用户控件WebUserControl.ascx,再在用户控件下方添加一个按钮和一个文本框,添加代码如下:
- public partial class test : System.Web.UI.Page
- {
- protected void Page_Load(object sender, EventArgs e)
- {
- }
- protected void Button1_Click(object sender, EventArgs e)
- {
- TextBox1.Text = WebUserControl1.List1 + "->" + WebUserControl1.List2;
- }
- }
4. 运行浏览效果吧
总结
本例子将用户控件的属性和内部的子控件进行关联,并设置为可读可写,在实际应用中,最好把set删除掉,也就是只允许读,或者可以在set代码那里添加一些异常处理,用户控件还可以添加事件,有时间我会做些详细的补充。
博客地址:http://blog.youkuaiyun.com/much0726