[英]Postbacktrigger control within asyncpostbacktrigger control?
大家好,我们在项目的其中一个页面中具有以下结构:
<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>
我们希望每次用户更改选项卡时更新updatepanel。 问题在于,在uc2控件中,我们具有带有链接按钮的gridview来下载报告(.xlsx),并且由于uc2在内部控件中,它是asyncpostback触发器,因此每次我们单击linkbutton时,updatepanel都会更新而不是整个页面,因此我们无法下载报告。
以前,当tabContainer不是asyncpostbactrigger时,我们可以通过以下方式将gridview注册为回发控件:
ScriptManager.GetCurrent(Page).RegisterPostBackControl(this.gvInsertionHistory);
但不幸的是,它停止工作了。
有什么方法可以将那些链接按钮甚至整个gridview或uc2注册为回发控件,即使它们位于asyncpostbackcontrol内部?
以及使用EventName属性的原因是什么? 它设置为ActiveTabChanged
但每次我们在tabContainer中单击某些内容时,updatepanel都会更新。
我尝试过在标记中还将uc2添加为PostbackTrigger,但看来这是不可能/不允许的。 将childrenAsTrigger
设置为false也没有帮助。
我将不胜感激。
在你得到任何深入到这个问题,尝试通过查询字符串为基础的方法重写您的下载按钮与Queryparamters链接-而不是回发按钮-导出您的XLSX。 这将始终导致整个页面加载 (只要您不使用框架)。 生成这样的东西:
<a href="?ID=1&Format=xlsx">download</a>
并在Page_Load检查中
if (Request.Querystring["Format"] == "xlsx")
{
//Response.Write(...render xlsx method)
}
编辑:您甚至可以target="_blank"
链接以保持当前页面视图不变
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.