我正在尝试将数据库中的类别名称列表读入数组列表;然后我将列表绑定到下拉框中。我收到此错误,我不知道如何解决它。请帮忙。感谢
Unable to cast object of type 'System.String' to type 'System.Web.UI.WebControls.ListItem
代码在此行失败:
foreach (ListItem item in arr)
这是我在代码背后的内容
private void FillDropDownList(DropDownList ddl)
{
ArrayList arr = GetDummyData();
foreach (ListItem item in arr)
{
ddl.Items.Add(item);
}
}
private ArrayList GetDummyData()
{
ArrayList arr = new ArrayList();
string strConn = ConfigurationManager.ConnectionStrings["mycon"].ConnectionString.ToString();
SqlConnection con = new SqlConnection(strConn);
con.Open();
SqlCommand cmd = new SqlCommand("select distinct ct_name from myTable", con);
SqlDataReader objDR = cmd.ExecuteReader();
if (objDR != null)
while (objDR.Read())
{
//fill arraylist
arr.Add(objDR["ct_name"]);
}
con.Close();
return arr;
}
答案 0 :(得分:1)
您的ArrayList包含字符串。你的循环尝试将它们作为ListItems
进行迭代,它们不是,因此位到处都是。将迭代变量类型更改为' string'
foreach (string item in arr)
BTW:在更现代的代码中,ArrayLists几乎肯定不如List<String>
类型更受欢迎。 ArrayLists是一种来自仿制前时代的延续。
答案 1 :(得分:1)
你的ArrayList包含字符串,然后你试图迭代它,好像它里面有ListItem一样。你需要改变你的foreach:
foreach (string item in arr)
{
ddl.Items.Add(new ListItem(item));
}