繁体   English   中英

ASP.Net为AJAX手风琴窗格动态添加按钮和事件

[英]ASP.Net dynamically add buttons and events to AJAX Accordion Pane

我已经搜索了一段时间,但似乎无法得到一个不错的答案。 我正在使用手风琴,并动态添加带有网格的窗格。 当每个面板都添加到手风琴时,我还想添加一个文本框和一个按钮。

//add a comments box and a submit button to the container
            Button btnComments = new Button();
            btnComments.ID = CheckName + "btnComment" + i;
            btnComments.CommandName = "SubmitComment";
            TextBox txtComments = new TextBox();
            txtComments.ID = CheckName + "txtComment" + i;
            pane.ContentContainer.Controls.Add(new LiteralControl("<br />"));
            pane.ContentContainer.Controls.Add(txtComments);
            pane.ContentContainer.Controls.Add(new LiteralControl("<br />"));
            pane.ContentContainer.Controls.Add(btnComments);

文本框和按钮按预期方式出现在手风琴中,但事件不会触发。 我一直在阅读该事件需要在Page_Load中添加,但是此时按钮不存在。

我尝试将CommandEvent添加到手风琴中,然后我可以捕获发送方,但是再次没有触发

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
        <asp:Panel ID="Panel1" runat="server" />
        <asp:Accordion ID="Accordion1" runat="server" AutoSize="None" 
            RequireOpenedPane="False" SelectedIndex="-1" FadeTransitions="false"  OnItemCommand="Linked_ItemCommand">
        </asp:Accordion>
        <br />
        <p>
            <asp:Button ID="btnRunChecks" runat="server" OnClick="RunChecks" Text="Run Checks" />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            <asp:CheckBox ID="chkDebug" runat="server" EnableTheming="False" Text="Run in Debug mode" />
        </p>
    </ContentTemplate>
</asp:UpdatePanel>

任何想法,我在做什么错-任何指针,不胜感激。 单击该按钮时,只会导致回发并刷新,从而丢失动态创建的手风琴窗格。

我也曾经遇到过类似的问题,在万分沮丧之后,唯一的解决方案是没有解决方案。

当您动态创建控件时,无论是否要使用手风琴,控件都会被创建并发送到客户端,然后根据客户端的浏览器呈现它们。

* 回发后,无法按照您在页面加载事件中添加的内容重新渲染服务器上的控件。 *

这是我尝试向Gridview中动态添加文本框(可能会增加列数)时学到的:预添加大量可见性为false的列,然后仅隐藏我需要的数目。

如果有人在那里有更好的解决方案,那么我将全力以赴!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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