在引导模式主体中动态添加的 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 可能对您有帮助,并且提到的答案 here 和 here 可能对您非常有用!! 大家好,谢谢大家。因为这个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">×</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 的模态弹出窗口