string strsql = "select jydbh,jhrq,ysfs,sxhh,sdz,zdz,thfs,shrxm ,shrdh,shrdz,fhrxm,fhrdh,fhrdz,zongbxe,zongbxf,zcyf,dzf,shf,yingjje,xianjin,qiankuan,shangfu,qdlx,beizu,yhr,zdr,skr,qkr,dshk,dzf,shf,jjf,hwjs,zongtiji,zongzl,zongbxe,hwmc,danwei,jianshu,ztiji,zzl,cyf,bxe,huikou,zyf from jydxx,hwxx where jydxx.jyd_id = hwxx.jyd_id and jydxx.jydbh='KCKY10020701005'";
                SqlCommand cmd = new SqlCommand(strsql, conn);
                SqlDataReader rdr = cmd.ExecuteReader();                 while (rdr.Read())
                {
                    this.lbljydbh.Text = rdr["jydbh"].ToString();
                    ....................
                       GridView1.DataSource = rdr;
                       GridView1.DataBind();  //放在这里怎么只显示一条记录(数据库有多条记录)
                 }如果放在while(){}外的话可以显示Gridview1 但是 this.lbljydbh.Text = rdr["jydbh"].ToString();
这个就不显示了??

解决方案 »

  1.   

     GridView1.DataBind();  //放在这里怎么只显示一条记录(数据库有多条记录) 
    这句话不要行不行呢?
      

  2.   

    放在外面 
    rdr.Read()读到结尾,没有记录了 所以不显示先了解一下rdr.Read()
      

  3.   

    如果放在while()外面的话 GridView1是可以正常显示数据 
    但是while(){this.lbljydbh.Text = rdr["jydbh"].ToString(); ........}
    里面的数据就不显示了
      

  4.   

    请楼主明确一点:GridView控件的数据源只能是:DataSet,DataTable,集合,数组
      

  5.   

    数据源应该没问题的 如果去掉while(rdr.read()){} 的话 GridView1的数据就可以正常显示了
    如果去掉GridView1.DataSource =rdr;GridView1.DataBind();的话 while(rdr.read())里面的也可以显示,好像两者不能同时执行?
    但是我既要将rdr 作为GridView1的数据源 
    又要将while(rdr.read()){}里面的执行??
    怎么办呢?
      

  6.   

    SqlCommand cmd = new SqlCommand(strsql, conn); 
    SqlDataReader rdr = cmd.ExecuteReader(); 
    DataTable table = new DataTable();
    table.Load(rdr);
                    while (rdr.Read()) 
                    { 
                        this.lbljydbh.Text = rdr["jydbh"].ToString(); 
                        .................... 
                          //GridView1.DataSource = rdr; 
                          //GridView1.DataBind();  //放在这里怎么只显示一条记录(数据库有多条记录) 
                    } 
    GridView1.DataSource = table; 
    GridView1.DataBind();  
      

  7.   

    string strsql = "select jydbh,jhrq,ysfs,sxhh,sdz,zdz,thfs,shrxm ,shrdh,shrdz,fhrxm,fhrdh,fhrdz,zongbxe,zongbxf,zcyf,dzf,shf,yingjje,xianjin,qiankuan,shangfu,qdlx,beizu,yhr,zdr,skr,qkr,dshk,dzf,shf,jjf,hwjs,zongtiji,zongzl,zongbxe,hwmc,danwei,jianshu,ztiji,zzl,cyf,bxe,huikou,zyf from jydxx,hwxx where jydxx.jyd_id = hwxx.jyd_id and jydxx.jydbh='KCKY10020701005'";
                    SqlCommand cmd = new SqlCommand(strsql, conn);
    DataTable dt = new DataTable();
    SqlDbDataReader dr = new SqlDbDataReader();
    dr = cmd.ExecuteReader();
    dt.Load(dr);dataviwe.datasource = dt;
      

  8.   


                SqlConnection conn = new SqlConnection("server=.;database=SystemDatabase;uid=sa;pwd=123456");
                conn.Open();
     
                    string strsql = "select jydbh,jhrq,ysfs,sxhh,sdz,zdz,thfs,shrxm ,shrdh,shrdz,fhrxm,fhrdh,fhrdz,zongbxe,zongbxf,zcyf,dzf,shf,yingjje,xianjin,qiankuan,shangfu,qdlx,beizu,yhr,zdr,skr,qkr,dshk,dzf,shf,jjf,hwjs,zongtiji,zongzl,zongbxe,hwmc,danwei,jianshu,ztiji,zzl,cyf,bxe,huikou,zyf from jydxx,hwxx where jydxx.jyd_id = hwxx.jyd_id and jydxx.jydbh='KCKY10020701005'";                SqlCommand cmd = new SqlCommand(strsql, conn);                 DataTable table = new DataTable();
                    
                    SqlDataReader rdr = cmd.ExecuteReader();
                    
                    table.Load(rdr);
                    
                    while(rdr.Read())//到这边的时候提示 “阅读器关闭时尝试调用 Read 无效。”                {                    this.lbljydbh.Text = rdr["jydbh"].ToString();
                        this.lblzdtime.Text = rdr["jhrq"].ToString();
                        ..................................
                    }
                     GridView1.DataSource = rdr;
                     GridView1.DataBind();
      

  9.   

    请楼主明确一点:GridView控件的数据源只能是:DataSet,DataTable,集合,数组
    ding 
      

  10.   

    楼上有解了
    .read()是逐行的
      

  11.   

     SqlCommand cmd = new SqlCommand(strsql, conn);                 DataTable table = new DataTable(); 
                    
                    SqlDataReader rdr = cmd.ExecuteReader(); 
                    
                    table.Load(rdr); 
                    
                     foreach (DataRow row in table.Rows)
    {                     this.lbljydbh.Text = row["jydbh"].ToString(); 
                        this.lblzdtime.Text = row["jhrq"].ToString(); 
                        .................................. 
                    } 
                    GridView1.DataSource = table; 
                  //  GridView1.DataBind();
    这回应该可以了