【发布时间】:2012-03-06 16:54:31
【问题描述】:
大家好,我们的项目页面之一具有以下结构:
<asp:UpdatePanel ID="up1" runat="server">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="tabContainer" EventName="ActiveTabChanged" />
</Triggers>
<ContentTemplate>
<cc1:TabContainer ID="tabContainer" runat="server" Visible="false" ActiveTabIndex="0" AutoPostBack="true" OnActiveTabChanged="BtnTrigger_Click">
<cc1:TabPanel ID="tab1" runat="server" HeaderText="tab1">
<ContentTemplate>
<uc:userControlFirst ID="uc1" runat="server" />
<uc:userControlSecond ID="uc2" runat="server"/>
</ContentTemplate>
</cc1:TabPanel>....
</ContentTemplate>
</asp:UpdatePanel>
我们希望每次用户更改标签时更新更新面板。问题是,在 uc2 控件中,我们有带有链接按钮的 gridview 来下载报告(.xlsx),并且因为 uc2 在控件内部,它是异步回发触发器,所以每次我们单击链接按钮时,更新面板都会更新而不是整个页面,所以我们无法下载报告。
以前当tabContainer不是asyncpostbacttrigger时,我们可以通过以下方式将gridview注册为回发控件:
ScriptManager.GetCurrent(Page).RegisterPostBackControl(this.gvInsertionHistory);
但不幸的是它停止了工作。
有没有办法将这些链接按钮甚至整个 gridview 或 uc2 注册为回发控件,即使它们在 asyncpostbackcontrol 中?
使用 EventName 属性的原因是什么?它是为ActiveTabChanged 设置的,但每次我们点击 tabContainer 内的东西时都会更新更新面板。
我也尝试在标记中添加 uc2 作为 PostbackTrigger,但看起来这是不可能的/不允许的。将 childrenAsTrigger 设置为 false 也无济于事。
如有任何想法,我将不胜感激。
【问题讨论】:
标签: c# asp.net ajax triggers updatepanel