Привет, ребята, у нас есть следующая структура на одной из страниц нашего проекта:
<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 у нас есть сетка с кнопками ссылок для загрузки отчета (.xlsx), и поскольку uc2 находится внутри элемента управления, который является триггером asyncpostback, каждый раз, когда мы нажимаем на кнопку ссылки, обновления панели обновлений вместо всей страницы, поэтому мы не можем для загрузки отчетов.
Ранее, когда tabContainer не был asyncpostbactrigger, мы могли зарегистрировать gridview в качестве элемента управления обратной передачей:
ScriptManager.GetCurrent(Page).RegisterPostBackControl(this.gvInsertionHistory);
но, к сожалению, он перестал работать.
Есть ли способ зарегистрировать эти кнопки ссылок или даже весь gridview или uc2 в качестве элемента управления обратной передачей, даже если они находятся внутри asyncpostbackcontrol?
А в чем причина использования атрибута EventName? Он установлен для ActiveTabChanged
, но панель обновления обновляется каждый раз, когда мы щелкаем что-то внутри tabContainer.
Я пытался также добавить uc2 в качестве PostbackTrigger в разметке, но похоже, что это невозможно / запрещено. Установка childrenAsTrigger
в false тоже не помогла.
Буду благодарен за любые идеи.