您的位置:首页 > 编程语言 > ASP

ASP.NET 自定义WEB控件:DropDownList改进版

2008-04-19 10:49 429 查看
自带的DropDownList控件,能实现动态绑定数据源,但无法实现动态版定值和或项。再GridView等控件中模板列,要实现动态绑定DropDownList控件的项集合和选择项。则需要编写代码。如在ItemDataBound事件中实现。本控件则可以在模板列中一次搞定:

如下调用:


<aspEx:DropDownListEx ID="City" runat="server" Width="66px" AppendDataBoundItems="true"


DataSource='<%#JobhaV2.Base.HaCity.Datatable %>' DataTextField="City" DataValueField="City"




DataBindValue='<%...#Eval("City") %>'


>




<asp:ListItem>首页</asp:ListItem>


</aspEx:DropDownListEx>


using System;


using System.Collections.Generic;


using System.ComponentModel;


using System.Text;


using System.Web;


using System.Web.UI;


using System.Web.UI.WebControls;


using System.Web.UI.HtmlControls;




namespace WebControls




...{






[Description("DropDownList下拉框的改进版;实现动态版定数据源和绑定数据值")]


[ToolboxData("<{0}:DropDownListEx runat=server></{0}:DropDownListEx>")]


public class DropDownListEx : DropDownList




...{




string m_DataBindValue, m_DataBindText;


bool m_AddBindValue = false;




[Bindable(true)]


[Category("高级属性")]


[Description("获取或设置用来绑定下拉列表的选中项,用于模板控件中绑定数据,无须在代码中另外设置。仅用在绑定数据中有效")]


[Localizable(true)]


public string DataBindValue




...{




get ...{ return m_DataBindValue; }


set




...{


m_DataBindValue = value;


if (m_DataBindText == null)m_DataBindText = value;


}


}




[Bindable(true)]


[Category("高级属性")]


[Description("获取或设置用来绑定下拉列表的选中项文本,必须设置DataBindValue后且找不到原始项的时候才使用此文本。仅用在绑定数据中有效")]


[Localizable(true)]


public string DataBindText




...{




get ...{ return m_DataBindText; }




set ...{ m_DataBindText = value; }


}




[Bindable(true)]


[Category("高级属性")]


[Description("获取或设置当下拉列表所有项中没有绑定的选中项。是否自动添加此项,仅用在绑定数据中有效")]


[Localizable(true)]


public bool AddBindValue




...{




get ...{ return m_AddBindValue; }




set ...{ m_AddBindValue = value; }


}




protected override void OnDataBinding(EventArgs e)




...{


base.OnDataBinding(e);


if (m_DataBindValue == null) return;


foreach (ListItem item in this.Items)




...{


if (item.Value == m_DataBindValue)




...{


item.Selected = true;


return;


}


}


if (AddBindValue)




...{


ListItem add = new ListItem(m_DataBindText, m_DataBindValue);


this.Items.Add(add);


add.Selected = true;


}


}




}


}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: