C# 使 HTML Table 重复行

C# Make HTML Table repeating rows

我有这个 HTML table:

<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();
}

这行得通,但是当我需要 return 多行时,这只有 return 1 行,因为我只为 table 正文声明了 1 行。我该如何解决这个问题?提前谢谢你。

我不熟悉 asp.net,但是这种情况看起来类似于 php 中可能发生的情况,在这种情况下,我会尝试在 [=] 中生成整个 table 15=]。类似于

for row in tables
    append to html <tr><td>data</td><td>moredata</td></tr>

insert html into <table></table>

在 Aspx 页面中,除了 table 之外添加占位符,如下所示。

<asp:PlaceHolder ID = "tableClientSearch" runat="server"/>

在 Aspx.cs 文件中。

 StringBuilder html = new StringBuilder();
                html.Append("<table border = '1'><thead><tr><td>Client Account 

Number</td><td>Client Name</td></tr></thead>");

        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())
            {
                html.Append("<tr>");
                html.Append("<td>");
                html.AppendFormat("<a href='ClientInfo.aspx?ClientNumber={0}'>{0}</a>", readers.GetString(0));
                html.Append("</td>");
                html.Append("<td>");
                html.Append(readers.GetString(1));
                html.Append("</td>");
                html.Append("</tr>");
            }
            conn.Close();
        }

        html.Append("</table>");
        tableClientSearch.Controls.Add(new Literal { Text = html.ToString() });

删除 aspx.cs 文件中 class 级别的受保护 table

protected DataTable dt = new DataTable()

从 sql 查询(通过使用 DataAdapter)中填充此数据 table,我猜你知道怎么做,或者只是 google 它。

在 aspx 中,替换

<tr>                  
    <td><asp:Literal ID="CliNox" runat="server"></asp:Literal></td>      
    <td><asp:Literal ID="CliNamex" runat="server"></asp:Literal></td>            
</tr>

来自

foreach (DataRow dr in dt)
{
    <tr>                  
        <td><%= dr["columnName1"] %></td>    
        <td><%= dr["columnName2"] %></td>            
    </tr>
}