如何解决这个错误''读者'是一个'变量'但是像'方法'一样使用''

时间:2014-04-19 07:32:16

标签: sql c#-4.0

我正在使用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循环。

2 个答案:

答案 0 :(得分:2)

C#中的索引是使用[]运算符完成的,而不是使用()运算符,例如Visual Basic。

本质上

reader(0)

表示"用方法reader调用方法0"和

reader[0]

表示在变量0中为索引reader提供值。


除此之外,仅当您对下拉列表进行数据绑定时才使用DataTextFieldDataValueField,而不是手动插入项目,因此可以省略这两行。

它们也是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();
    }

使用[]代替()