2015-02-05 3 views
0

내 웹 페이지에서 모든 레코드를 성공적으로 검색 할 수 있습니다. 나는 다른 "상태"를 기반으로 레코드를 필터링하는 드롭 다운 목록을 사용하고 있습니다. 그러나 검색된 첫 번째 레코드 만 표시됩니다. 예외 또는 오류가 없습니다. 내 SQL 문을 테스트하기 위해 데이터베이스에서 쿼리를 실행할 때 검색된 레코드가 3 개 있습니다. 나는 아직도 나의 코드에서 무엇이 잘못되었는지를 확인할 수 없다.Gridview는 첫 번째 레코드 만 표시합니다.

3 계층 웹 응용 프로그램에서 작업 중입니다.

public List<Submission> getStatusList(string statusPick) 
{ 
     List<Submission> specificStatus = new List<Submission>(); 
     Submission sub2 = new Submission(); 
     specificStatus = sub2.getStatusNewList(statusPick); 
     return specificStatus; 
} 

데이터 액세스 레이어 : 여기

는 프리젠 테이션 계층에 대한 내 코드,

protected void ddl_status_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     string status = ddl_status.SelectedItem.ToString(); 

      //Default 
      if (status == "Show All Submissions") 
      { 
       gv_combinedEntries.Visible = true; 
       SubmissionBLL sBLL = new SubmissionBLL(); 

       //Call getAllStudent() method in StudentBLL 
       List<Submission> subAll = new List<Submission>(); 

       subAll = sBLL.getAllSub(); 

       gv_combinedEntries.DataSource = subAll; 
       gv_combinedEntries.DataBind(); 
      } 

      else 
      { 
       SubmissionBLL subStatus = new SubmissionBLL(); 
       List<Submission> subList = new List<Submission>(); 
       subList = subStatus.getStatusList(status); 
       gv_combinedEntries.DataSource = subList; 
       gv_combinedEntries.DataBind(); 
      } 
    } 

비즈니스 로직 계층 있습니다 당신은 변경해야

public List<Submission> getStatusNewList(string statusSelected) 
    { 
     List<Submission> subStatus = new List<Submission>(); 
     string Id, School, TeamName, submissionDate, status; 

     string queryStr = "SELECT s.Id,c.School,c.TeamName,s.submissionDate, 
     c.submissionStatus FROM TeamSubmission s INNER JOIN Competition c 
     ON c.teamUsername = s.username WHERE submissionStatus = @enterStatus"; 

     SqlConnection conn = new SqlConnection(_connStr); 
     SqlCommand cmd = new SqlCommand(queryStr, conn); 

     cmd.Parameters.AddWithValue("@enterStatus", statusSelected); 

     conn.Open(); 
     SqlDataReader dr = cmd.ExecuteReader(); 

     if (dr.Read()) 
     { 
      Id = dr["Id"].ToString(); 
      School = dr["School"].ToString(); 
      TeamName = dr["TeamName"].ToString(); 
      submissionDate = dr["submissionDate"].ToString(); 
      status = dr["submissionStatus"].ToString(); 

      subStatus.Add(new Submission(Id, School, TeamName, submissionDate, status)); 
     } 

     conn.Close(); 
     dr.Close(); 
     dr.Dispose(); 

     return subStatus; 
    } 
+0

코드를 살펴본 후 'subList'또는 'subAll'에 둘 이상의 값이 있는지 확인 했습니까? –

답변

1

당신의 경우 (dr.Read()) 잠시 동안 문 (dr.Read())

while (dr.Read()) 
     { 
      Id = dr["Id"].ToString(); 
      School = dr["School"].ToString(); 
      TeamName = dr["TeamName"].ToString(); 
      submissionDate = dr["submissionDate"].ToString(); 
      status = dr["submissionStatus"].ToString(); 

      subStatus.Add(new Submission(Id, School, TeamName, submissionDate, status)); 
     } 
관련 문제