在引导模式主体中动态添加的 asp.net 按钮/链接按钮 web 控件不会回发

Posted

技术标签:

【中文标题】在引导模式主体中动态添加的 asp.net 按钮/链接按钮 web 控件不会回发【英文标题】:asp.net button/linkbutton webcontrol dynamically added in bootstrap modal body doesn't postback 【发布时间】:2015-07-17 11:23:20 【问题描述】:

我在 html 表格中动态添加了链接按钮,并添加到引导模式的正文中。 (linkbutton 已编码 linkbutton.click += new eventhandler(Eventclick1);)

但是,当我单击选择时,它不会转到我的函数Eventclick1。它只是刷新整个页面。 (它已经在更新面板中)。无论如何,我可以让select 按钮回发? (我不想添加像onclientclick = $('#otherbutton').click();这样的客户端点击功能)

更新

lnk_button.ID = this.ID + "AuditSelectedRow_" + Convert.ToString(l_loop); 
lnk_button.Click += new EventHandler(OnAuditRowSelected);
lnk_button.Text = "Select"; 
WebControl wc_tdSelect = new WebControl(HtmlTextWriterTag.Td); 
wc_tdSelect.Controls.Add(lnk_button);

【问题讨论】:

很抱歉,但老实说,您没有得到任何问题的图片! This Link 可能对您有帮助,并且提到的答案 herehere 可能对您非常有用!! 大家好,谢谢大家。因为这个webcontrol我经常使用,所以,我忘记了其实有一个功能可以检查。如果是那个特定的 webcontrol 回发,那么将渲染表格(如上图),但由于不知道是什么原因,它没有检测到自己回发,因此,它没有重新渲染表格。并导致回发不会触发事件。我做了一些调整以更好地识别回发本身。 但是,问题是我丢失了异步回发。它成为同步回发 确保 UseSubmitBehavior 设置为 false usesubmitbehavior 仅用于按钮 webcontrol,usesubmithehavior 将获得同步回发。我已经通过使用按钮/图像按钮而不是链接按钮解决了这个问题。 【参考方案1】:

首先确保您在 Updatepanel 中的自定义 web 控件在页面生命周期结束时仍然存在。我假设您正在调用一个函数,您将在其中将链接按钮添加到 web 控件。像这样:

// Custom function Creating link buttons

private void CreateControls() 

// Create your link buttons here.


现在尝试在页面预初始化方法中再次调用相同的函数,以确保在按钮单击事件时控件仍然存在。像这样:

//Page Pre Init
protected void Page_PreInit(object sender, EventArgs e)

CreateControls();

确保您已将 Web 控件添加到更新面板中的上述相同功能。这是将 web 控件附加到更新面板的示例代码。

yourUpdatePanel.ContentTemplateContainer.Controls.Add(wc_tdSelect);

我相信这次你会得到你想要的结果:)

【讨论】:

【参考方案2】:

我遇到了与模式弹出窗口类似的问题,问题基本上是(如上所述),是呈现 asp.net 控件的顺序与注册事件和/或 JS 函数时的顺序。

一种解决方法是手动渲染 HTML 控件,以便您可以控制它的名称和渲染时间。

【讨论】:

【参考方案3】:

通常你应该避免动态控件,你应该在设计时在 div 中添加按钮并在客户端显示/隐藏该 div 以便弹出。

看看这个帖子:-

***

【讨论】:

【参考方案4】:

您可以像在您的示例中一样使用 ASP 按钮

   <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                <ContentTemplate>
                    <!-- Modal -->
                    <asp:Label ID="Label1" runat="server" Text=""></asp:Label><br />
                    <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"
                        aria-hidden="true">
                        <div class="modal-dialog">
                            <div class="modal-content">
                                <div class="modal-header">
                                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                                        <span aria-hidden="true">&times;</span></button>
                                    <h4 class="modal-title" id="myModalLabel">
                                        Modal title</h4>
                                </div>
                                <div class="modal-body">
                                    <asp:TextBox ID="TextBox1" runat="server" placeholder="First Name" class="form-control"></asp:TextBox><br />
                                    <asp:TextBox ID="TextBox2" runat="server" placeholder="Middle Name" class="form-control"></asp:TextBox><br />
                                    <asp:TextBox ID="TextBox3" runat="server" placeholder="Last Name" class="form-control"></asp:TextBox><br />
                                </div>
                                <div class="modal-footer">
                                    <button type="button" class="btn btn-default" data-dismiss="modal">
                                        Close</button>
                                    <%--<button type="button"  class="btn btn-primary">
                                        Save changes</button>--%>
                                    <asp:Button Text="Save" OnClick="Submit" runat="server" />
                                </div>
                            </div>
                        </div>
                    </div>
                </ContentTemplate>
            </asp:UpdatePanel>

【讨论】:

【参考方案5】:

这是以下内部页面加载:

ScriptManager scriptManager = ScriptManager.GetCurrent(this.Page);
scriptManager.RegisterPostBackControl(this.OnAuditRowSelected);

【讨论】:

以上是关于在引导模式主体中动态添加的 asp.net 按钮/链接按钮 web 控件不会回发的主要内容,如果未能解决你的问题,请参考以下文章

如何为 asp.net 核心中的删除按钮应用 sweetalert 或引导模式

ASP.NET MVC 在 jQuery 数据表中使用带有按钮 onclick 的模态弹出窗口

ASP.NET MVC 验证不适用于引导模式

Asp.net mvc 问题将部分页面加载到引导模式中

通过asp.net中的代码向网页添加按钮并删除动态数据库条目

以 ASP.NET MVC 表格形式动态添加行