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

自带的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 == nullreturn;
            
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;
            }

        }

       
    }

}

 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值