dropdownlist控件当使用this.ddlist.SelectedValue=rdr.GetValue(3)+"";查询时报错,如下:异常详细信息: System.ArgumentOutOfRangeException: 指定的参数已超出有效值的范围。参数名: 勘察设计类。而我新添加一条信息或者查询类别为别的时候都不报错,只有查询类别为勘察设计类的时候不报错。前提:我是按照编号查询的。
if(!IsPostBack)
{
this.Dlei.Items.Add("--请选择--");
this.Dlei.Items.Add("咨询类");
this.Dlei.Items.Add("勘测设计类");
}

解决方案 »

  1.   

                    this.Dlei.Items.Add("--请选择--");
                    this.Dlei.Items.Add("咨询类");
                    this.Dlei.Items.Add("勘测设计类");
    你一共只有三个选项,这个索引是从0开始的,所以最后一个才只是2,你却用了索引3,当然超出了
      

  2.   


    这只是一段代码。我是用reader从数据库读取的数据。类别字段在数据库中在第二位。
      

  3.   

    private void ImageButton1_Click(object sender, System.Web.UI.ImageClickEventArgs e)
    {
    string SocutLink ="uid=sa;pwd=sa;database=win;server=.";
    SqlConnection ConnSql = new SqlConnection (SocutLink); //生成一个新的连接
    ConnSql.Open(); //打开数据库
    string strupdate="select * from win_data where sn='"+this.Tsn.Text+"'";
    SqlCommand cmd=new SqlCommand (strupdate,ConnSql);//创建Command命令对象
    SqlDataReader rdr; //声明一个DataReader对象
    rdr=cmd.ExecuteReader();
    if(rdr.Read())
    {
    Tsn.Text=rdr.GetValue(1)+"";
    Tname.Text=rdr.GetValue(2)+"";
    this.Dlei.SelectedValue=rdr.GetValue(3)+"";
    //Dlei.SelectedValue=rdr.GetValue(3)+"";
    Tpeople.Text=rdr.GetValue(4)+"";
    Twin.Text=rdr.GetValue(5)+"";
    Lstr.Text=rdr.GetValue(1)+"";
    Ladd.Text="修改";
    }
    ConnSql.Close();
    }
      

  4.   

    应该是你的dropdownlist里面不存在你读出的值...
      

  5.   


    呵呵,没错就是这个问题。这个程序是以前别人做的,叫我改,dropdownlist里的值和数据库中的值不一致导致读取错误,害的我搞了半天最后才发现当时没注意。呵呵,下回可要仔细点啊
      

  6.   

    我没开程序,是猜的.
    Items.Add("")这个方法应该有个重载的方法Items.Add("","")
    第一个方法string是指的Text
    重载的方法第一个string是Text,第二个string是Value
    所以Items.Add("--请选择--"); 这么添加的Item它们的Value应该都是""(空值);
    所以SelectedValue是找不到的.