我在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;
}
}
答案 0 :(得分:1)
从代码中取出while
循环:
using (reader = getTasksCmd.ExecuteReader())
{
rptTaskList.DataSource = reader;
rptTaskList.DataBind();
}
因为您正在调用SqlDataReader.Read()
一次,所以您正在超越第一条记录。因此,如果您希望能够检索包括第一行在内的所有数据行,请不要再调用Read()
。