2012-02-14 79 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