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;
}
}
从代码中取出while
循环:
using (reader = getTasksCmd.ExecuteReader())
{
rptTaskList.DataSource = reader;
rptTaskList.DataBind();
}
因为您调用了SqlDataReader.Read()
一次,所以您正在越过第一条记录。因此,如果希望能够检索包括第一行在内的所有数据行,则根本不要调用Read()
。
SqlDataReader.Read()方法MSDN参考