2011-07-28 34 views
11

我在我的asp.net网页中有一个updatepanel。我想通过一个按钮触发一个JavaScript函数insead中的updatepanel。
为了做到这一点,我使用了__doPostBack('myUpdatePanel', '');函数。但我认为它会导致整个页面回传。当我调用这个函数时,我的document.ready函数也会被执行。我可能会错过一些观点。
是否有任何其他方式来触发javascript功能内的更新面板?如何在JavaScript函数中触发更新面板

回答

18

我想如果你在更新面板中放置一个隐藏的按钮,你可以使用javascript来点击这个按钮,它会做你想做的。

<script type="text/javascript"> 
     function Update_UpdatePaanel() { 
      document.getElementById('<%= YourButton.ClientID %>').click() 
     } 
    </script> 

的按钮必须是一个隐藏的div内,不要设置都看得到=“假”,因为如果你把它设置为false,控制将不渲染和JavaScript会产生误差。

<div style="display:none"> 
     <asp:Button ID="YourButton" runat="server" /> 
    </div> 
+0

是否真的有可能?所以我应该寻找如何点燃一个aspbutton的点击。你知道如何用JavaScript隐藏aspbutton的点击事件吗? – Fer

+0

document.getElementById('<%#YourButton.ClientID%>')。click() –

+0

我用示例代码更新了我的答案。 –

3

只需创建一个javascript函数和执行生成的回发事件:

<%=ClientScript.GetPostBackEventReference(myUpdatePanel, "")%> 

上面的语句是把你的aspx页面上,和它引用从服务器产生完全相同的代码引起回发你的面板。你可以把它在函数内部在客户端使用它:

function fncUpdatePanel() { 
    <%=ClientScript.GetPostBackEventReference(myUpdatePanel, "")%>; 
} 

然后你可以在功能连接到您的页面上的任何事件(甚至是鼠标悬停事件)。本示例使用服务器端附加事件:

myUpdatePanel.attributes('onmouseover', 'fncUpdatePanel()') 
+0

你能详细解释一下吗?我需要在JavaScript代码中触发面板。你的代码似乎在服务器端? – Fer

+0

添加了更多详细信息 – rkw

+1

这不起作用,因为GetPostBackEventReference用于回发而非异步回发。我试图使用GetCallbackEventReference,而不是有任何遗忘传递正确的控制参考,使其工作。 – jlafay

相关问题