ASP.NET DropDownList如何绑定数据源的?
如果我要自己写个这样的控件,
数据源是个集合 属性必须有一个显示值和隐藏值 怎么弄?
想知道DropDownList是怎么实现的
我现在的疑难点 就是 我不知道传进来的集合类型 只知道一个显示值隐藏值属性,内部怎么处理?
我想的是 比如传一个List<a>
内部就是
A a =selectItem as A
a.ID a.Name
这样只能使用一个
想多处怎么办
[解决办法]
显示的内容是类型A的ToString方法的返回内容,要访问具体属性,将选择的item转为A类型
[解决办法]
foreach(var a in List<a>)
{
}
[解决办法]
一般都是定义一个类型,给DropDownLis数据源一个明确的类型,之后在给 DropDownLis 数据源的如果不对,就转换一下。定义一个只有Key 和Value的类型。 这样 DropDownLis里面内部绑定的时候就可以明确了。
[解决办法]
/// <summary>
/// 绑定DownList 设置text跟value 没有-请选择-
/// </summary>
/// <param name="TableName">表名(可以加条件)</param>
/// <param name="MyDDL">需要绑定的DownList</param>
/// <param name="TextStr">text的字段</param>
/// <param name="ValueStr">value的字段</param>
public static void BindDropDownList(string TableName, DropDownList MyDDL, string TextStr, string ValueStr)
{
string sql = "select * from " + TableName;
MyDDL.Items.Clear();
SqlDataReader dr = DbHelperSQL.GetDataReader(sql);
while (dr.Read())
{
ListItem MyItem = new ListItem();
MyItem.Text = dr[TextStr].ToString();
MyItem.Value = dr[ValueStr].ToString();
MyDDL.Items.Add(MyItem);
}
dr.Close();
}
dosoft.BLL.BaseBLL.BindDropDownList("xt_tc_Plant", dropdownlist1, "name", "id");