【发布时间】:2012-01-04 01:09:16
【问题描述】:
当页面上有多个 UpdatePanel 时尝试通过 JavaScript 更新 UpdatePanel 时,我遇到了关闭行为。
会尽量简短:
- 我已经将 UpdateMode 设置为 Conditional
- 我将 UpdatePanel 的正确 ClientID 传递到 __EventTarget
- 在代码隐藏中,我成功地找到了目标控件
但由于某种原因,页面上每个 UpdatePanel 的 OnLoad 都会被触发。
下面是一段 sn-p 代码 - 知道为什么会这样吗?
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>
代码隐藏:
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 PostBack):
var updatePanelWrappers = $(".updatePanelWrapper");
var availableWrapper = updatePanelWrappers[0];
var updatePanelElement = $(availableWrapper).children()[0];
var updatePanelId = $(updatePanelElement).attr("id");
window.__doPostBack(updatePanelId, "Some Arguments...");
【问题讨论】:
标签: asp.net asp.net-ajax updatepanel