繁体   English   中英

asyncpostbacktrigger控件内的postbacktrigger控件?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM