2012-02-14 4 views
2

ADO.NET 코드의 특이한 문제가 있습니다. 이것은 프론트 엔드에서 중계기에서 액세스하는 테이블 데이터입니다.ADO.NET : 데이터가 중계기에 제대로 표시되지 않습니다.

1 get car cleaned    2012-02-14 08:32:25.643   NULL 
2 submit tax documents  2012-02-14 08:33:04.610   NULL 
3 photo copy all documents 2012-02-14 08:33:04.610   NULL 

첫 번째 행의 데이터가 전혀 표시되지 않습니다.

행 2와 3을 삭제하면 리피터에 데이터가 표시되지 않습니다. 문제는 내 ADO.NET 코드에 있다고 생각합니다. 또한 테이블을 완전히 자르면 레이블에 "No Data Found"메시지가 표시되는 것과는 반대로 페이지가 영원히로드됩니다.

protected void Page_Load(object sender, EventArgs e) 
{ 
    txtNewTask.Focus(); 
    if (!IsPostBack) 
    { 
     GetTaskList(); 
    } 
} 

protected void GetTaskList() 
{ 

    conn = new SqlConnection(cstr); 
    getTasksCmd = new SqlCommand("select Name, CreationDate, CompletionDate from tasks", conn); 

    try 
    { 
     using (conn) 
     { 
      conn.Open(); 
      using (reader = getTasksCmd.ExecuteReader()) 
      { 
       while (!reader.Read()) 
       { 
        lblDbMsg.Text = "No Data Found!"; 
       } 

       rptTaskList.DataSource = reader; 
       rptTaskList.DataBind(); 

      } 
     } 
    } 

    catch (Exception) 
    { 
     throw; 
    } 
} 

답변

1

코드에서 while 루프를 가지고 : 당신이 한 번 SqlDataReader.Read()를 호출하기 때문에

 using (reader = getTasksCmd.ExecuteReader()) 
     { 
      rptTaskList.DataSource = reader; 
      rptTaskList.DataBind(); 
     } 

, 당신은 첫 번째 레코드를지나 이동하고있다. 따라서 첫 번째 행을 포함하여 모든 데이터 행을 검색 할 수 있으려면 Read()을 호출하지 마십시오.

SqlDataReader.Read() Method MSDN Reference

+0

감사합니다. – Animesh

+0

@KishorNanda 도와 드리겠습니다! –

관련 문제