关于 c#:populate dropdown list from a list of objects

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
DropDownList1.DataValueField ="ID";
DropDownList1.DataTextField ="Name";
DropDownList1.DataSource = new[] {
    new { ID = 1, Name ="Alice" },
    new { ID = 2, Name ="Mike" },
    new { ID = 3, Name ="John" }
};
DropDownList1.DataBind();

有用吗?它对我有用。然后尝试更改 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; }
    }

}