ADO.NET:数据无法在转发器中正确显示

时间:2012-02-14 03:12:47

标签: c# 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 个答案:

答案 0 :(得分:1)

从代码中取出while循环:

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

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

SqlDataReader.Read() Method MSDN Reference