【发布时间】:2017-08-08 12:39:36
【问题描述】:
我有这个 HTML 表格:
<table ID="tbl_ClientSearch" style="width: 83%;" runat="server">
<thead>
<tr>
<td>Client Account Number</td>
<td>Client Name</td>
</tr>
</thead>
<tbody>
<tr>
<td><asp:Literal ID="CliNox" runat="server"></asp:Literal></td>
<td><asp:Literal ID="CliNamex" runat="server"></asp:Literal></td>
</tr>
</tbody>
</table>
然后我有这个查询:
SqlCommand command = new SqlCommand(@"EXEC [dbo].[CTLC_SearchClient] '" + SearchVal + "';");
SqlConnection conn = new SqlConnection(connString);
conn.Open();
command.Connection = conn;
SqlDataReader readers = command.ExecuteReader();
if (readers.HasRows)
{
while (readers.Read())
{
string CliNo = readers.GetString(0);
string CliName = readers.GetString(1);
CliNox.Text = string.Format("<a href='ClientInfo.aspx?ClientNumber={0}'>{0}</a>", CliNo.ToString());
CliNamex.Text = CliName.ToString();
}
conn.Close();
}
这可行,但是当我需要返回多行时,这只返回 1 行,因为我只为表体声明了 1。我该如何解决这个问题?提前谢谢你。
【问题讨论】:
-
您是否检查过您的 SP 是否返回多行?
-
@MAdeelKhalid andeel Khalid 是的。它工作正常。但是我的程序只显示最后一行,因为我认为它会覆盖 html 表格行上的值。
-
即写你的程序应该只显示最后一行,你已经这样编码,即你只有一个
并且你正在覆盖该行单元格,你需要动态创建表结构或简单地使用 Gridview 或中继器控件。 -
使用中继器控件:msdn.microsoft.com/en-us/library/zzx23804(v=vs.85).aspx。此外,您的 SQL 命令对 SQL 注入攻击是开放的。
-
您可以使用 GridView、Repeater 或 asp:table 以表格格式呈现多行。参考这里,stackoverflow.com/a/139308/405317
标签: c# html asp.net html-table sqldatareader