yyy类:
    public SqlDataReader getDataReader(string ReaderString)
    {
        SqlConnection con = new SqlConnection(constring);
        con.Open();
        SqlCommand cmd = new SqlCommand(ReaderString,con);
        cmd.CommandType = CommandType.StoredProcedure;
        SqlDataReader dr = cmd.ExecuteReader();
        if (dr.Read())
        {           
            return dr;
        }
        else
        {
            return null;
        }
        dr.Close();
        con.Close();
    }aspx页面:
         yyy showNoteBookClass = new yyy();
        SqlDataReader dr = showNoteBookClass.getDataReader("NoteBook_c_select");  //存储过程“select * from NoteBook_Class”
        this.DropDownList1.DataSource = dr;
        this.DropDownList1.DataTextField = "N_c_name";
        this.DropDownList1.DataBind();
奇怪的是,当数据库有2项的时候,DropDownList中只有1项,数据库有3项时,DropDownList中只有2项,总是把第一项隐藏起来~~这是为什么啊~?该怎么办呢???

解决方案 »

  1.   


    this.DropDownList1.DataValueField = "主键";加上他看看
      

  2.   


    this.DropDownList1.DataValueField = "主键";加上他看看
      

  3.   

    你直接返回一个 sqlDataReader 不需要再加 
    if(read.Reder())
    {
       
    }你改成这样试一下 public SqlDataReader getDataReader(string ReaderString) 
        { 
            SqlConnection con = new SqlConnection(constring); 
            con.Open(); 
            SqlCommand cmd = new SqlCommand(ReaderString,con); 
            cmd.CommandType = CommandType.StoredProcedure; 
            SqlDataReader dr = cmd.ExecuteReader(); 
            return dr;
        }
      

  4.   

     if (dr.Read()) 
     你已经读取了一行了。这样就损失了一行数据应该用
    if(dr.HasRow())