【问题标题】:Unable to find control in Update Panel for trigger在更新面板中找不到触发器的控件
【发布时间】:2013-05-26 20:26:24
【问题描述】:

在我们使用 c# 的 asp.net 应用程序中,我们使用带有更新面板控件的 Ajax。 在面板中,我们在选项卡面板中放置了导出到 excel 按钮。

我们还在内容模板结束后放置了触发器。请找到以下代码供您参考。

<asp:UpdatePanel ID="UpdatePanelPage" runat="server" UpdateMode="Conditional">
    <ContentTemplate>

        <table id="tblMain" runat="server" cellpadding="0" cellspacing="0"    width="100%">
             <tr>
                 <td>
                     <asp:TabContainer ID="TabContainer1" runat="server" Width="100%">
                         <asp:TabPanel ID="tabCompanyName" runat="server">
          <asp:Button ID="btnStateExportToExcel" runat="server" Text="Export To Excel"    CssClass="button" OnClick="btnStateExportToExcel_Click" />
   </asp:TabPanel>
</asp:TabContainer>
                  </td>
            </tr>
        </table>
    </ContentTemplate>
   <Triggers>
          <asp:PostBackTrigger ControlID="btnStateExportToExcel" />
     </Triggers>
            </asp:UpdatePanel>

现在当我们运行页面时会显示以下错误。 “在 UpdatePanel 'UpdatePanelPage' 中找不到触发器的 ID 为 'btnStateExportToExcel' 的控件。” 任何想法/建议都非常值得赞赏。

*根据谷歌的搜索结果,该按钮位于标签面板中,因为哪个页面无法找到此控件。

【问题讨论】:

  • 感谢您的建议。我尝试了-建议的内容-ScriptManager scriptManager = ScriptManager.GetCurrent(this.Page); scriptManager.RegisterPostBackControl(button1);但现在导出到 excel 功能不起作用。错误描述为:Microsoft JScript runtime error: Sys.WebForms.PageRequestManagerParserErrorException: The message received from the server could not be parsed.

标签: asp.net triggers updatepanel


【解决方案1】:

您的按钮位于其他控件中。您应该为更新面板触发器指定命名容器层次结构。我认为这对您有帮助:

<asp:PostBackTrigger ControlID="TabContainer1$tabCompanyName$btnStateExportToExcel" />

【讨论】:

  • 我多年来一直在编写 ASP.Net,但我不知道您可以在那里使用完整的控制 ID 路径!谢谢!
  • 是的,但这仅在按钮不是网格视图的一部分时才有效。那么如何将更新面板指向许多 SUBMIT 类型的按钮之一?
  • 我也不知道你能做到这一点。这值得更多的投票。
猜你喜欢
  • 1970-01-01
  • 2011-02-02
  • 1970-01-01
  • 2011-01-28
  • 1970-01-01
  • 1970-01-01
  • 2012-05-21
  • 1970-01-01
相关资源
最近更新 更多