我正在使用C#class.Everythink工作正常,但我遇到此错误,所以请帮助修复此错误。
public void Filldropdownlist(DropDownList ddl, string DisplayVal, string Qstr)
{
try
{
CreateConn();
SqlCommand cmd = new SqlCommand(Qstr, constr);
SqlDataReader reader = cmd.ExecuteReader();
ddl.Items.Clear();
ddl.Items.Add(new ListItem(DisplayVal, "none"));
while (reader.Read())
{
ddl.Items.Add(new ListItem(reader(0).ToString(), reader(1).ToString()));
ddl.DataTextField = reader(0).ToString();
ddl.DataValueField = reader(1).ToString();
}
}
catch (Exception ex)
{
}
finally
{
CloseConn();
}
}
问题进入了while循环。
答案 0 :(得分:2)
C#中的索引是使用[]
运算符完成的,而不是使用()
运算符,例如Visual Basic。
本质上
reader(0)
表示"用方法reader
调用方法0
"和
reader[0]
表示在变量0
中为索引reader
提供值。
除此之外,仅当您对下拉列表进行数据绑定时才使用DataTextField
和DataValueField
,而不是手动插入项目,因此可以省略这两行。
它们也是incorect,因为它们需要设置为字段的名称,而不是值
答案 1 :(得分:1)
像这样改变:
while (reader.Read())
{
ddl.Items.Add(new ListItem(reader[0].ToString(), reader(1).ToString()));
ddl.DataTextField = reader[0].ToString();
ddl.DataValueField = reader[1].ToString();
}
使用[]
代替()