在 c# 面板上使用 DataReader 和 TextBox 控件的 Repeater 控件
Repeater Control with DataReader and TextBox Control on Panel in c#
在 MySQL 数据库中 我有这个 table :
+------------+----+
| 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 Control 和 Repeater Control 填充此 table aspx 页面的数据:
<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();
}
}
}
但是在输出中我没有数据库的第一行table:
+------------+----+
| IDE | Of |
+------------+----+
| 01 Line 01 | E |
+------------+----+
我还有数据库的所有其他行 table :
+------------+----+
| IDE | Of |
+------------+----+
| 02 Line 08 | E |
| 21 Tras 03 | E |
| 22 Tras 09 | E |
| 31 Client | E |
+------------+----+
有人可以帮我吗?
提前致谢。
您在读取第一条记录后将 reader 分配给 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();
}
}
在 MySQL 数据库中 我有这个 table :
+------------+----+
| 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 Control 和 Repeater Control 填充此 table aspx 页面的数据:
<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();
}
}
}
但是在输出中我没有数据库的第一行table:
+------------+----+
| IDE | Of |
+------------+----+
| 01 Line 01 | E |
+------------+----+
我还有数据库的所有其他行 table :
+------------+----+
| IDE | Of |
+------------+----+
| 02 Line 08 | E |
| 21 Tras 03 | E |
| 22 Tras 09 | E |
| 31 Client | E |
+------------+----+
有人可以帮我吗?
提前致谢。
您在读取第一条记录后将 reader 分配给 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();
}
}