我试图从javascript调用“AcceptSuggestion”。我模拟了一下“acceptBtn”,然后我想刷新一个表行。它正在工作......但是“AcceptSuggestion”功能被调用了三次。谁知道为什么?我点击之前试图解开“acceptBtn”,但我没有运气。
以下是更新面板:
<asp:UpdatePanel ID="12" UpdateMode="Conditional" runat="server">
<ContentTemplate>
<div id="123">
<asp:Literal ID="litTable" runat="server"></asp:Literal>
</div>
<button id='acceptBtn' onserverclick="AcceptSuggestion" runat="server" style="display: none" />
<button id='acceptAllBtn' onserverclick="AcceptAllSuggestions" runat="server" style="display: none" />
<asp:HiddenField ID="1" runat="server" Value="" />
<asp:HiddenField ID="2" runat="server" Value="" />
<asp:HiddenField ID="3" runat="server" Value="" />
<asp:HiddenField ID="4" runat="server" Value="" />
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="acceptBtn" EventName="ServerClick" />
<asp:AsyncPostBackTrigger ControlID="acceptAllBtn" EventName="ServerClick" />
</Triggers>
</asp:UpdatePanel>
以下是被调用的函数:
Protected Sub AcceptSuggestion()
Dim params As String
params = 1.Value
Dim param() As String = Split(params, "|", , CompareMethod.Text)
update(param)
End Sub
嗯,我猜问题不是更新面板也不是触发器。
这是我的javascript函数来调用按钮,我无论如何都找不到这个工作,我觉得我已经尝试了所有的东西。
function acceptButton(i) {
var params = "";
params += document.getElementById("var1" + i).textContent;
params += "|";
params += document.getElementById("var2" + i).textContent;
params += "|";
params += document.getElementById("var3" + i).textContent;
params += "|";
params += document.getElementById("var4" + i).textContent;
params += "|";
params += document.getElementById("var5" + i).textContent;
var bp = document.getElementById('<%=1.ClientID%>');
bp.value = params;
var ri = document.getElementById('<%=2.ClientID%>');
ri.value = i;
var Status = document.getElementById('<%=3.ClientID%>');
Status.value = 1;
$('#<%=acceptBtn.ClientID%>').off().click();
}
答案 0 :(得分:0)
是的,我认为这是因为Web窗体的工作方式:)它会触发不同的事件,您可以看到整个页面生命周期Here。我认为您的问题的解决方案是在您的页面上使用Load方法或在您的Init方法中使用并在方法的顶部使用此代码。
if(this.IsPostBack)
{
return;
}