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列做…)
总结问题,
- c# HtmlTable不循环通过JS添加的数据
- 获取每个htmlableow的内部html
您的逻辑的问题是,您通过javascript动态添加行将丢失在回发。通过javascript操纵的Dom不会被发送回来,因为它不是一个输入字段。您可以通过在服务器上运行隐藏字段来规避这个问题。在post back上设置hiddenfield的值与innerhtml的表。在服务器端查询此隐藏字段以获取html。