为了构建一个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;
}
感谢
答案 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; }
}
}