2012-02-14 80 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代碼上。另外,如果我完全截斷表格,頁面將永久加載,而不是在標籤中顯示「未找到數據」消息。

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循環:

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

因爲你在呼喚SqlDataReader.Read()一次,你是移動過去的第一個記錄。因此,如果您希望能夠檢索包括第一行在內的所有數據行,則根本不要調用Read()

SqlDataReader.Read() Method MSDN Reference

+0

謝謝,工作! – Animesh 2012-02-14 03:29:38

+0

@KishorNanda很高興幫助! – 2012-02-14 03:33:06