自定义下拉控件dropdownlist,绑定数据更方便

本文介绍如何继承DropDownList控件,实现自定义功能,并详细讲解如何更方便地进行数据绑定,提高开发效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

继承DropDownList 

begin

  public class MyDropDown : System.Web.UI.WebControls.DropDownList
    {
        #region 改变样式
        //protected override void Render(System.Web.UI.HtmlTextWriter writer)
        //{   
        //    writer.Write("aaaaaaaaaaaa");
        //    this.Attributes["width"] = "100";
        //}
        //protected override void LoadViewState(object savedState)
        //{
        //    object[] dlls = (Object[])savedState;
        //    base.LoadViewState(dlls[0]);
        //    System.Collections.ArrayList list = (System.Collections.ArrayList)dlls[1];
        //    for (int i = 0; i < list.Count; i++)
        //    {
        //        System.Collections.Hashtable hash = (System.Collections.Hashtable)list[i];
        //        foreach (object key in hash.Keys)
        //        {
        //            Items[i].Attributes.Add(key.ToString(), hash[key].ToString());
        //        }
        //    }
        //}
        //protected override object SaveViewState()
        //{
        //    object[] attr = new object[2];
        //    attr[0] = base.SaveViewState();
        //    System.Collections.ArrayList list = new System.Collections.ArrayList();
        //    attr[1] = list;
        //    foreach (ListItem item in this.Items)
        //    {
        //        System.Collections.Hashtable hash = new System.Collections.Hashtable();
        //        foreach (Object key in item.Attributes.Keys)
        //        {
        //            hash.Add(key, item.Attributes[key.ToString()]);
        //        }
        //    }
        //    return attr;
        //}
        //protected override void RenderContents(System.Web.UI.HtmlTextWriter writer)
        //{
        //    DropDownList dp = new DropDownList();
        //    Style s = new Style();
        //    s.CssClass.Insert(1, "");
        //    dp.ApplyStyle();
        //}

        #endregion

        /// <summary>
        /// 是否添加"请选择"行
        /// </summary>
        private bool isnullrow = false;
        public bool IsNullRow
        {
            get { return isnullrow; }
            set { isnullrow = value; }
        }
        /// <summary>
        /// 获取下拉框类型
        /// </summary>
        private DropDownType m_dropdowntype;
        public DropDownType M_DropDownType
        {
            get { return m_dropdowntype; }
            set { m_dropdowntype = value; }
        }
        / <summary>
        / 表名
        / </summary>
        //private string giveTablename;
        //public string GiveTablename
        //{
        //    get { return giveTablename; }
        //    set { giveTablename = value; }
        //}
        /// <summary>
        /// name dropdownlist的text值
        /// </summary>
        private string textFiled;
        public string TextFiled
        {
            get { return textFiled; }
            set { textFiled = value; }
        }
        /// <summary>
        /// id dropdownlist的value值
        /// </summary>
        private string valueField;
        public string ValueField
        {
            get { return valueField; }
            set { valueField = value; }
        }


        /// <summary>
        /// 控件绑定的方法
        /// </summary>
        public void Bind()
        {
            DataTable dss = new DataTable();
            // System.Web.Caching.Cache a = new System.Web.Caching.Cache();  //加入数据到 缓存
            //a.Add(
            //如果缓存中有数据,则从缓存中去获取
            if (HttpRuntime.Cache["data"] != null)
            {
                //M_DropDownType.GetHashCode()获取到在枚举类型中对应的索引
                //通过索引获取缓存(dataset)中的值
                //dss = ((DataSet)HttpRuntime.Cache["data"]);
                dss = ((DataSet)HttpRuntime.Cache["data"]).Tables[0];
            }
            else
            {
                try
                {
                    BaseData bll = new BaseData();
                    if (!TextFiled.Equals("") && !ValueField.Equals(""))
                    {
                        DataSet ds = bll.GetBaseData(TextFiled, ValueField, M_DropDownType.ToString());

                        //读取配置文件中,缓存过期时间
                        int time = int.Parse(ConfigurationManager.AppSettings["cachetime"].ToString());
                        //将数据保存在缓存中,以提高应用程序性能
                        HttpRuntime.Cache.Insert("data", ds, null, DateTime.Now.AddMinutes(time), TimeSpan.Zero);
                        dss = ds.Tables[0];

                    }
                }
                catch (Exception ex)
                {

                    throw;
                }
            }
            if (dss != null)
                for (int i = 0; i < dss.DataSet.Tables[0].Rows.Count; i++)
                {
                    ListItem lists = new ListItem(dss.DataSet.Tables[0].Rows[i]["name"].ToString(), dss.DataSet.Tables[0].Rows[i]["id"].ToString());
                    //if (lists.Value == "1") lists.Selected = true;
                    if (lists.Selected)
                    {
                        lists.Attributes.Add("style", "background-color:white");
                    }
                    else
                    {
                        lists.Attributes.Add("style", "background-color:yellow");
                    }
                    this.Items.Add(lists);
                }

            //this.DataSource = dt;
            //this.DataTextField = "name";
            //this.DataValueField = "id";
            //this.DataBind();

            if (IsNullRow)
                this.Items.Insert(0, new ListItem("--请选择--", ""));

        }
    }
    /// <summary>
    /// 下拉框类型枚举(与存储过程中的表的顺序必须一一对应)
    /// </summary>
    public enum DropDownType
    {
        //流程
        user,
        //文档类型
        m_boothInfo,
        m_carmanage
    }

end


自定义控件:

下拉框控件
	1.写存数过程
		---创建存储过程
		create proc BaseData
		as
			select id=htypeid,name=htypename from OA_HType
			select id=Roleid,name=rolename from OA_TRole
		go
		
		---查找存储过程
		exec BaseData

	2.调用存储过程
	public static DataSet GetBaseData()
        {
            DBHelper db = new DBHelper();
            DataSet ds = db.ExecuteDataSet("BaseData", null, CommandType.StoredProcedure);
            return ds;
        }
	
	3.修改配置
	<appSettings>
		<add key="cachetime" value="0"/>
		<add key="FCKeditor:BasePath" value="~/FCKeditor/"/>
		<add key="FCKeditor:UserFilesPath" value="/web/UserFiles/"/>
	</appSettings>

	4.下拉框类型枚举(与存储过程中的表的顺序必须一一对应)
		枚举里的类型自定义的
	public enum DropDownType
   	 { 
       		//会议类型
		HType,
		//发起人类型(角色) 
       		HRole
   	 }

	5.页面调用
	<cc1:MyDropDown ID="MyDropDown1" runat="server" M_DropDownType="HType">
        </cc1:MyDropDown>

	6.后台调用
	 MyDropDown1.Bind();


源码下载: http://download.youkuaiyun.com/detail/shiyong7682719/6729523
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值