c# - ADO.NET:数据未在转发器中正确显示

标签 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;
    }
}

最佳答案

从您的代码中删除 while 循环:

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

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

SqlDataReader.Read() Method MSDN Reference

关于c# - ADO.NET:数据未在转发器中正确显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9271202/

相关文章:

c# - 通用 (UWP) 应用程序中的 ConfigurationManager 和 AppSettings

c# - 可切换数据访问层的结构

asp.net - 甲骨文与分页

c# - 根据下拉框选择隐藏/显示表单

c# - 用于数据库数据和文件复制的书面传输脚本

c# - 统计正则表达式在字符串中匹配的次数

c# - Xamarin Android 引用的 PCL 引用的 Nuget 包(EF Core Sqlite)未复制到 bin

c# - 模板控件中的 ContentPresenter 不起作用

c# - 如何在 DataGridView 中获取选定的数据行?

c# - 通过 ado.net 从 C# 调用 SQL Server 存储过程超时