我在 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;
}
}
最佳答案
从您的代码中删除 while
循环:
using (reader = getTasksCmd.ExecuteReader())
{
rptTaskList.DataSource = reader;
rptTaskList.DataBind();
}
因为您正在调用 SqlDataReader.Read()
一次,所以您将越过第一条记录。因此,如果您希望能够检索包括第一行在内的所有数据行,则根本不要调用 Read()
。
关于c# - ADO.NET:数据未在转发器中正确显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9271202/