页面上的所有UpdatePanels在__doPostBack上更新 [英] All UpdatePanels on page updating on __doPostBack
问题描述
你好,
当页面上有多个UpdatePanel时,尝试通过JavaScript更新UpdatePanel时出现行为异常.
会尽量简短:
-我已经将UpdateMode设置为条件
-我将UpdatePanel的正确ClientID传递给__EventTarget
-在后台代码中,我可以成功找到目标控件
但是由于某种原因,页面上每个UpdatePanel的OnLoad都会被触发.
以下是一段代码-知道为什么会发生这种情况吗?
Ascx:
Hello,
I am experiencing off behaviour when trying to update an UpdatePanel via JavaScript when multiple UpdatePanels are on the page.
Will try to keep it short:
- I''m already setting the UpdateMode to Conditional
- I am passing in the correct ClientID of the UpdatePanel into the __EventTarget
- In the code-behind, I am successfully able to find the target control
But for some reason, the OnLoad of every UpdatePanel on the page is fired.
Below is a snippet of code - any idea why this is happening?
Ascx:
<div class="updatePanelWrapper">
<asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" RenderMode="Inline" OnLoad="UpdatePanel1Load"
runat="server">
<ContentTemplate>
<asp:Panel ID="Panel1" runat="server">
</asp:Panel>
</ContentTemplate>
</asp:UpdatePanel>
</div>
<div class="updatePanelWrapper">
<asp:UpdatePanel ID="UpdatePanel2" UpdateMode="Conditional" RenderMode="Inline" OnLoad="UpdatePanel2Load"
runat="server">
<ContentTemplate>
<div>
<asp:Panel ID="Panel2" runat="server">
</asp:Panel>
</div>
</ContentTemplate>
</asp:UpdatePanel>
</div>
CodeBehind:
CodeBehind:
protected void UpdatePanel1Load(object sender, EventArgs e)
{
UpdatePanelLoad(sender, e);
}
protected void UpdatePanel2Load(object sender, EventArgs e)
{
UpdatePanelLoad(sender, e);
}
protected void UpdatePanelLoad(object sender, EventArgs e)
{
// if only a async postback then load the control
if (ScriptManager.GetCurrent(Page).IsInAsyncPostBack)
{
// Some Logic ...
}
}
JavaScript(我在其中触发ASYNC回发):
JavaScript (where I''m triggering the ASYNC PostBack):
var updatePanelWrappers = $(".updatePanelWrapper");
var availableWrapper = updatePanelWrappers[0];
var updatePanelElement = $(availableWrapper).children()[0];
var updatePanelId = $(updatePanelElement).attr("id");
window.__doPostBack(updatePanelId, "Some Arguments ");
推荐答案
(" ); var availableWrapper = updatePanelWrappers [ 0 ]; var updatePanelElement =
(".updatePanelWrapper"); var availableWrapper = updatePanelWrappers[0]; var updatePanelElement =
(availableWrapper).children()[ 0 ]; var updatePanelId =
(availableWrapper).children()[0]; var updatePanelId =
(updatePanelElement).attr(" id"); 窗口.__doPostBack(updatePanelId," );
(updatePanelElement).attr("id"); window.__doPostBack(updatePanelId, "Some Arguments ");
这篇关于页面上的所有UpdatePanels在__doPostBack上更新的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!