c#循环通过javascript添加的HTML表行

本文关键字:HTML 表行 添加 javascript 循环 | 更新日期: 2023-09-27 17:50:41

我正试图通过runat="server"的HTML表循环-但它的数据是通过javascript动态添加的。

<table runat="server" id="confirmCartTable" class="confirmCartTable cartGrid table">
   <tr>
       <th>ID</th>
       <th>Product</th>
       <th>Price</th>
       <th>Quantity</th>
       <th>Total</th>
   </tr>
</table>

下面显示3行。但是当我使用c#:

进行循环时
    //get the datatable consisting of ProductID, Quantity, Price
    for(int i = 0;i < confirmCartTable.Rows.Count; i++)
    {
         **//confirmCartTable.Rows.Count is only 1, table headers only**
         HtmlTableRow row = confirmCartTable.Rows[i];
         dr = dt.NewRow();
         dr["ProductID"] = row.Cells[0].Controls[0];
         dr["Quantity"] = row.Cells[2].Controls[0];
         dr["Price"] = row.Cells[3].Controls[0];
         dt.Rows.Add(dr);
    }

是因为行是通过JS动态添加的吗?这个问题的解决方案是什么?

在上面的循环中,我需要将其添加到DataTable中。我得到了row, cells [I]。控件[0]作为System.Web.UI.LiteralControl…我试着用

StringBuilder sb = new StringBuilder();
StringWriter tw = new StringWriter(sb);
HtmlTextWriter hw = new HtmlTextWriter(tw);
HtmlTable.RenderControl(hw);
dr[i] = sb.ToString();

它工作,但这太长了(我必须为所有3列做…)

总结问题,

  1. c# HtmlTable不循环通过JS添加的数据
  2. 获取每个htmlableow的内部html

c#循环通过javascript添加的HTML表行

您的逻辑的问题是,您通过javascript动态添加行将丢失在回发。通过javascript操纵的Dom不会被发送回来,因为它不是一个输入字段。您可以通过在服务器上运行隐藏字段来规避这个问题。在post back上设置hiddenfield的值与innerhtml的表。在服务器端查询此隐藏字段以获取html。