populate dropdown list from a list of objects
在构建 3 层架构 c# asp.net 应用程序的尝试中,我开始构建一个数据库类,用于连接到数据库,另一个类是 City,每个类都有一个方法表中的列和一个 Cities 类,其中我有 GetCities 方法,该方法创建一个 City 对象列表,然后使用 DataSource 向导将控件设置为使用来自 GetCities() 的数据。
我得到的只是下拉列表中的空白。知道为什么吗?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | public List<City> GetCities() { List<City> cities = new List<City>(); Database db = new Database(); SqlConnection conn = db.GetConnection(); String sql ="SELECT * FROM CITIES"; SqlCommand cmd = new SqlCommand(sql, conn); SqlDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { City c = new City(reader.GetInt32(0), reader.GetString(1).ToString()); cities.Add(c); } db.CloseConnection(); return cities; } |
谢谢
您是否设置了 DataTextField、DataValueField 属性并调用了 DataBind?
在这一点上,我会尝试让这个概念尽可能简单地发挥作用,然后开始重新添加内容,直到找到问题所在。从一个全新的页面开始,添加一个 DropDownList 但不要触摸数据源或更改任何属性,直接进入代码隐藏并将其添加到 Page_Load:
1 2 3 4 5 6 7 8 |
有用吗?它对我有用。然后尝试更改 DataValueField、DataTextField 和 DataSource 以使用您的客户列表。现在坏了吗?然后您就知道问题出在客户列表的某个地方,而不是您绑定数据的方式。
您是否在要填充的对象上调用了 DataBind() 方法?
问题出在 City 类中,经过仔细检查后,我意识到构造函数分配了错误接收的参数。它现在正在工作。谢谢!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | public class City { int id; string name; public City(int id, string name) { this.id = id; this.name = name; } public int Id { get { return id; } set { id = value; } } public String Name { get { return name; } set { name = value; } } } |