从对象列表中填充下拉列表

时间:2010-12-20 13:30:18

标签: c# asp.net drop-down-menu n-tier-architecture business-objects

为了构建一个3层架构的c#asp.net应用程序,我开始构建一个用于连接数据库的数据库,另一个是City的类,每个类都有一个方法表城市中的列,以及一个Cities类,其中我有GetCities方法,用于创建City对象列表,然后使用DataSource向导将控件设置为使用GetCities()中的数据。 我得到的只是下拉列表中的空白。知道为什么吗?

        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;
    }

感谢

3 个答案:

答案 0 :(得分:3)

您是否设置了DataTextField,DataValueField属性并调用了DataBind?


此时我会尝试尽可能简单地使用该概念,然后重新开始添加内容,直到找到问题为止。从一个全新的页面开始,添加DropDownList但不要触摸数据源或更改任何属性,直接进入代码隐藏并在Page_Load中添加:

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以使用您的客户列表。它现在坏了吗?然后你知道问题出在客户列表的某个地方,而不是你绑定数据的方式。

答案 1 :(得分:2)

您是否在要填充的对象上调用了DataBind()方法?

答案 2 :(得分:0)

问题出现在City类中,经过仔细检查后我发现构造函数正在分配错误接收的参数。它现在正在运作。谢谢!

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; }
    }

}