【发布时间】:2014-07-08 21:20:17
【问题描述】:
有没有办法从客户端 JavaScript 设置 runat 属性?我需要在页面加载后向表中添加行,并且我需要将它们的单元格数据提供给服务器。我可以制作第一(几)行runat="server",但我不知道用户想要多少行,所以这不仅仅是添加一堆隐藏行并在何时显示它们的问题用户点击“添加新行”。
我可以想到几种方法来做到这一点:
每次用户单击“添加新行”按钮时回发到页面,并在服务器上而不是在 JavaScript/jQuery 中处理
runat属性。我不想这样做,但是因为这似乎是唯一可靠的方法,我可能不得不这样做。使用 jQuery 将
runat="server"添加到单元格中,然后在我下次进行回发时引用它们,但目前对它们不做任何事情。这对我来说是理想的解决方案,但我不确定 ASP.NET 是否以这种方式工作。考虑到 WebForms 是在 JavaScript 开发人员开始接受我们可以在页面加载后向页面添加元素之前创建的,我没有屏住呼吸。将
runat属性赋予table或tbody,然后以某种方式引用其子项。这也会比 #1 更好,但我也不确定如何做到这一点,或者即使它确实可以做到。
这是我想做的简化版本:
<table runat="server" id="this_table">
<tbody runat="server" id="this_table_body">
<tr>
<td class="this_table_cell">Some Content</td>
<td><button type="button" class="this_table_button">Please click this button</button>
</tr>
</tbody>
</table>
还有一个简化版的 jQuery:
$("#<%=this_table_body.ClientID%>").on("click", ".this_table_button", function() {
$("<%=this_table_body.ClientID%>").append("<tr>
<td class="this_table_cell">Some Content</td>
<td><button type="button" class="this_table_button">Please click this button</button>
</tr>
);
});
【问题讨论】:
-
投票者愿意详细说明吗?如果是我说的话,也许我可以改变它。谢谢。
标签: c# javascript jquery asp.net webforms