C# 面板上带有 DataReader 和 TextBox 控件的Repeater控件

Posted

技术标签:

【中文标题】C# 面板上带有 DataReader 和 TextBox 控件的Repeater控件【英文标题】:Repeater Control with DataReader and TextBox Control on Panel in c# 【发布时间】:2017-03-21 09:43:18 【问题描述】:

MySQL 数据库我有这张表:

+------------+----+
| IDE        | Of |
+------------+----+
| 01 Line 01 | E  |
| 02 Line 08 | E  |
| 21 Tras 03 | E  |
| 22 Tras 09 | E  |
| 31 Client  | E  |
+------------+----+
5 rows in set

我需要用 TextBox ControlRepeater Control 来填充这个表格的数据:

<asp:Panel ID="pnOf" runat="server">
   <asp:TextBox ID="txOf" runat="server" Enabled="false"></asp:TextBox>
</asp:Panel>
<br />
<asp:Panel ID="pnIDE" runat="server" Visible="false">
   <asp:Repeater ID="rptIDE" runat="server" EnableViewState="true">
      <ItemTemplate>
        <asp:TextBox ID="txIDE" runat="server" Text='<%# Eval("IDE") %>'></asp:TextBox>
      </ItemTemplate>
    </asp:Repeater>
</asp:Panel>

我已经尝试过使用这个代码隐藏

using (OdbcDataReader reader = cmd.ExecuteReader())

    if (reader.HasRows)
    
        while (reader.Read())
        
            txOf.Text = reader["Of"].ToString(); 

            rptIDE.DataSource = reader;
            rptIDE.DataBind();

        
    


但是在输出我没有第一行数据库表:

+------------+----+
| IDE        | Of |
+------------+----+
| 01 Line 01 | E  |
+------------+----+

我还有所有其他行的数据库表:

+------------+----+
| IDE        | Of |
+------------+----+
| 02 Line 08 | E  |
| 21 Tras 03 | E  |
| 22 Tras 09 | E  |
| 31 Client  | E  |
+------------+----+

谁能帮帮我?

提前致谢。

【问题讨论】:

【参考方案1】:

您在读取第一条记录后将读取器分配给 DataSource,这可能是缺少第一行的原因。在准备好之前分配它。

using (OdbcDataReader reader = cmd.ExecuteReader())

    if (reader.HasRows)
         
        //txOf.Text = reader["Of"].ToString(); 
        rptIDE.DataSource = reader;
        rptIDE.DataBind();
    

当您使用第一行填充txOf.Text 的文本时,您可以将数据放入数据表并获取第一行数据并绑定DataTable

using (OdbcDataReader reader = cmd.ExecuteReader())

    if (reader.HasRows)
         
        var dataTable = new DataTable();
        dataTable.Load(reader); 
        txOf.Text = dataTable.Rows[0]["Of"].ToString();
        rptIDE.DataSource = dataTable;
        rptIDE.DataBind();
    

【讨论】:

以上是关于C# 面板上带有 DataReader 和 TextBox 控件的Repeater控件的主要内容,如果未能解决你的问题,请参考以下文章

C# 数据绑定 ComboBox 在其他控件中更改数据

在 WinForms c# 面板上绘制矩阵[x,y]

Python / DataReader / Yahoo - 不推荐使用 pandas 的面板,我怎样才能将股票数据带入多索引数据帧?

如何使用 c# datareader 和存储过程从 spl server 2012 数据表更新单个记录?

C# WinForms 面板问题

C# - 将 DataReader 转换为 DataTable