日期:2014-05-17  浏览次数:20448 次

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");

------解决方案---