继承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();