DropDownList绑定SqlDataReader后,为什么少了第一条记录?怎么解决?SqlDataReader dr = cmd.ExecuteReader();
if(dr.Read())
{
ClassManage.DataTextField="Name";
ClassManage.DataValueField="ID";
ClassManage.DataSource=dr;
ClassManage.DataBind();
}

解决方案 »

  1.   

    don't call dr.Read, since the next Read called inside DataBind() will move to the second record,,
    SqlDataReader dr = cmd.ExecuteReader();ClassManage.DataTextField="Name";
    ClassManage.DataValueField="ID";
    ClassManage.DataSource=dr;
    ClassManage.DataBind();or use if(dr.HasRows)
      

  2.   

    SqlDataReader dr = cmd.ExecuteReader();
    if(dr.Read())
    {
    ClassManage.DataTextField="Name";
    ClassManage.DataValueField="ID";
    ClassManage.DataSource=dr;
    ClassManage.DataBind();
    }
    改成
    SqlDataReader dr = cmd.ExecuteReader();
    ClassManage.DataTextField="Name";
    ClassManage.DataValueField="ID";
    ClassManage.DataSource=dr;
    ClassManage.DataBind();
      

  3.   

    SqlDataReader dr = cmd.ExecuteReader();ClassManage.DataTextField="Name";
    ClassManage.DataValueField="ID";
    ClassManage.DataSource=dr;
    ClassManage.DataBind();
    ----------------------------
    可以吗?以前使用DataGrid绑定数据的时候不行的.只能一行行地初始化的!
      

  4.   

    to adandelion(被封杀) :
    可以的,我试过了。
      

  5.   

    如果要用datareader读出数据
    那么就用
    while(dr.read())
    {
    dropdownlist.item.add(dr[1].tostring());
    }====12345,上山打老虎
      

  6.   

    可有时候用dr.HasRows判断后,在取数据时会报错,明明是有记录的
      

  7.   


    private void Page_Load(object sender, System.EventArgs e)
    {
    // 在此处放置用户代码以初始化页面
       if(!Page.IsPostBack)//就第一次打开的时候执行
    {
              this.DBbind();
    }
    }private void DBbind()
    {
    SqlConnection con = DB.CreateCon();
    con.Open();
    SqlCommand cmd = new  SqlCommand("select * from cards_product",con);
    SqlDataReader sdr=cmd.ExecuteReader();
    this.ddcardtype.DataSource=sdr;
    this.ddcardtype.DataTextField="productname";
    this.ddcardtype.DataValueField="productid";
    this.ddcardtype.DataBind();
    sdr.Close();
    con.Close();
    }
      

  8.   

    不管是if还是while还是for
    都是不对的
    每次都要绑,什么意思?
    绑定一次就ok啊
      

  9.   

    写在if (dr.read())中当然是少了第一条呀,记录会移到第二条才绑定呀!直接写在外面即可!
      

  10.   

    只要绑定一次即可,写在Page_Load函数中!
      

  11.   

    SqlDataReader dr = cmd.ExecuteReader();
    ClassManage.DataTextField="Name";
    ClassManage.DataValueField="ID";
    ClassManage.DataSource=dr;
    ClassManage.DataBind();