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

来源:互联网 发布:lol挂机软件 编辑:程序博客网 时间:2024/05/17 08:57

继承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 BaseDataasselect id=htypeid,name=htypename from OA_HTypeselect id=Roleid,name=rolename from OA_TRolego---查找存储过程exec BaseData2.调用存储过程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.csdn.net/detail/shiyong7682719/6729523
0 0
原创粉丝点击