ADO.NET:数据在中继器中未正确显示

本文关键字:显示 中继器 NET 数据 ADO | 更新日期: 2023-09-27 18:24:43

我在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;
    }
}

ADO.NET:数据在中继器中未正确显示

从代码中取出while循环:

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

因为您调用了SqlDataReader.Read()一次,所以您正在越过第一条记录。因此,如果希望能够检索包括第一行在内的所有数据行,则根本不要调用Read()

SqlDataReader.Read()方法MSDN参考