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;
}
}
}
}
如下调用:
<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;
}
}
}
}
相关文章推荐
- ASP.NET自定义Web服务器控件-DropDownList/Select下拉列表控件
- 利用ASP.NET 2.0创建自定义Web控件
- ASP.NET 部署和使用自定义 Web 服务器控件
- 利用ASP.NET 2.0创建自定义Web控件
- ASP.NET 自定义Calendar Web 服务器控件
- 利用ASP.NET 2.0创建自定义Web控件
- 利用ASP.NET 2.0创建自定义Web控件
- [转]利用ASP.NET 2.0创建自定义Web控件(2)
- 用 ASP.NET 2.0 创建自定义 Web 控件
- asp.net web页面自定义分页控件使用详解
- ASP.NET - DropDownList Web 服务器控件概述(上)
- ASP.NET自定义Web服务器控件-Button控件
- 利用ASP.NET 2.0创建自定义Web控件
- ASP.NET - 如何:自定义 SiteMapPath Web 服务器控件的外观
- 探讨ASP.NET 2.0中的Web控件改进技术(3)
- 利用 ASP.NET 2.0 创建自定义 Web 控件
- ASP.NET自定义Web服务器控件之Button控件
- 利用ASP.NET 2.0创建自定义Web控件
- [转]利用ASP.NET 2.0创建自定义Web控件(1)
- 精进不休 .NET 4.0 (1) - asp.net 4.0 新特性之web.config的改进, ViewStateMode, ClientIDMode, EnablePersistedSelection, 控件的其它一些改进