在DOM加载后是否可以在C#中动态添加元素。以下是我的例子。
我们的想法是从用户干预中动态添加行,然后用户提交表单,C#codebehind将遍历每个新添加的行。
但是,无论添加多少行,C#都只计算1行。
这是HTML / Jquery / C#
HTML
在将新行添加到表之前。
<table id="tblRecordedBags" runat="server" class="tblBags">
<tr>
<th>Amount</th><th>Drop Bag Number</th><th>Edit</th><th>Remove</th>
</tr>
</table>
<input type='text' class='txtBagNum' id='txtBagNum'>
的jQuery
用于添加新行。
$('.addBag').on('click', function(){
$(".tblBags").append(
'<tr class="bag"><td class="bag">'
+ $(".total").val() + '</td><td class="bagID">'
+ $(".txtBagNum").val() + '</td>'
+ "</tr>'
});
C#Codebehind
快速调试写
System.Diagnostics.Debug.Write(tblRecordedBags.Rows.Count);
答案 0 :(得分:1)
这种情况正在发生,因为您从服务器端访问服务器端具有no knowledge of any changes to the DOM.
新行将添加到浏览器中,但默认页面保持不变,它们位于.aspx文件中,并且首先不会修改它们。
要获得正确的输出,您实际上可以在C#中添加行,然后尝试。
答案 1 :(得分:1)
我认为ASP.NET没有为javascript做好准备。
一种简单的方法是通过服务器端添加每行以及更新面板。
另一种方法是在提交之前尝试从隐藏字段中的行加载所有数据(例如,使用JSON编码)