我一直试图找到解决方案,但如果有人可以看看会很棒。
在我的aspx页面和C#代码隐藏中,我有以下内容:
ASPX:
<asp:UpdatePanel runat="server" ID="UpdatePanel8" UpdateMode="Conditional">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="btnAddTableRow" EventName="Click" />
</Triggers>
<ContentTemplate>
<div id="divDynamicFields" runat="server"></div>
</ContentTemplate>
</asp:UpdatePanel>
<div hidden>
<asp:Button ID="btnAddTableRow" runat="server" OnClick="AddTableRow" />
</div>
<script type="text/javascript">
function addTableRow(tableId) {
$('#<%=btnAddTableRow.ClientID%>').click();
}
</script>
C#:
protected void AddTableRow(object sender, EventArgs e)
{
(...)
}
如果我没有使用UpdatePanel,则会触发事件,但是当使用UpdatePanel执行时,会有PostBack,但不会调用C#方法。我已经尝试了解它已经有一段时间没有用了。有任何想法吗?谢谢。
答案 0 :(得分:0)
Button addRowButton = new Button();
addRowButton.Text = "This is my dynamically generated button";
addRowButton.Attributes.Add("onclick", "addTableRow('" + idControl + "')");
但是当我改为:
时,事情就开始起作用了HtmlGenericControl addRowButton = new HtmlGenericControl("input");
addRowButton.Attributes.Add("type", "button");
addRowButton.Attributes.Add("onclick", "addTableRow('" + idControl + "');");
addRowButton.Attributes.Add("value", "This is my dynamically generated button");
实际上有点奇怪,因为用Button()创建的按钮仍然调用了JS函数addTableRows并导致了PostBack,但没有调用后面的代码方法。也许它与页面生命周期和生成的动态按钮的ID有关,这些动态按钮以不同的方式生成,具体取决于将它们创建为Button或HtmlGenericControl,但它现在正在以任何方式工作。