本帖最后由 tianxiezuo 于 2011-06-25 19:17:14 编辑

解决方案 »

  1.   

    楼主在这个位置
      for  ( int  i  = 0 ; i  <  dt1.Rows.Count; i ++ )           {                if  (rdr.Read())               
    前面本来就是一个循环,而后面确认是否读成功却用到的if语句,所以只要有一条满足就不会继续下面的for循环。
    楼主只要把if改成while就可以了^_^
      

  2.   

    把if (rdr.Read())改成while(rdr.Read())
      

  3.   

    对的,如果要判断是否有行,好像是if(rdr.hasRow),单词估计不对,要循环读
      

  4.   

    你的绑定代码写在循环里面是不对的,
    dvList.DataSource = dt;
    dvList.DataBind();
    你看到的当然只有最后一次循环的结果啊你的代码逻辑有问题。
      

  5.   

    把if (rdr.Read())改成while(rdr.Read())
      

  6.   

    你的逻辑有问题 string strsql3 = "select id,ItemID,ItemID_ParentID,((select ItemName from t_RepairItemDetail where ItemID = '" +
                                                  strID.Substring(0, 7) + "') + '-' + ItemName) " +
                                                 " as ItemName,ItemStandHours,ItemOrder from t_RepairItemDetail where ItemID like '%" + strID + "%'";
                                DataTable dt = DBHelp.ReturnDataTable(strsql3, "t_table");
                                dvList.DataSource = dt;
                                dvList.DataBind();应该拿到外面
      

  7.   

    if (rdr.Read())当中的if改成while
      

  8.   


    using (OleDbDataReader dr = SqlHelper.GetReader(sql))
                {
                    if(dr.Read())
                    {
    //---------------if 与 while一字之差------------------
    using (OleDbDataReader dr = SqlHelper.GetReader(sql))
                {
                    while (dr.Read())
                    {