如何从后面的代码中关闭引导模式?
Posted
技术标签:
【中文标题】如何从后面的代码中关闭引导模式?【英文标题】:how to close bootstrap modal from code behind? 【发布时间】:2016-05-12 17:57:45 【问题描述】:我正在从模态进行更新操作。当模式弹出时,它会加载我要更新的特定行数据。 下面是我的模态代码:
<form id="form1" runat="server">
<asp:ScriptManager ID="sm1" runat="server"></asp:ScriptManager>
<asp:UpdatePanel ID="up1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<div id="myModal" class="modal fade" role="dialog" runat="server" draggable="auto">
<div class="modal-dialog">
<!-- Modal content-->
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h4 class="modal-title">Insert Module</h4>
</div>
<div class="modal-body">
<table class="table table-bordered">
<thead>
<tr>
<td colspan="2" style="text-align: center">
<label>UPDATE EMPLOYEE DETAIL</label>
</td>
</tr>
</thead>
<tbody>
<tr>
<td>
<label>FIRST NAME</label>
</td>
<td>
<asp:TextBox ID="up_tb1" runat="server"></asp:TextBox>
<ajax:filteredtextboxextender id="FilteredTextBoxExtender7" targetcontrolid="up_tb1" filtertype="UppercaseLetters,LowercaseLetters" runat="server"></ajax:filteredtextboxextender>
</td>
</tr>
<tr>
<td>
<label>MIDDLE NAME</label>
</td>
<td>
<asp:TextBox ID="up_tb2" runat="server"></asp:TextBox>
<ajax:filteredtextboxextender id="FilteredTextBoxExtender8" targetcontrolid="up_tb2" filtertype="UppercaseLetters,LowercaseLetters" runat="server"></ajax:filteredtextboxextender>
</td>
</tr>
<tr>
<td>
<label>LAST NAME</label>
</td>
<td>
<asp:TextBox ID="up_tb3" runat="server"></asp:TextBox>
<ajax:filteredtextboxextender id="FilteredTextBoxExtender9" targetcontrolid="up_tb3" filtertype="UppercaseLetters,LowercaseLetters" runat="server"></ajax:filteredtextboxextender>
</td>
</tr>
<tr>
<td>
<label>EMAIL</label>
</td>
<td>
<asp:TextBox ID="up_tb4" runat="server"></asp:TextBox>
<ajax:filteredtextboxextender id="FilteredTextBoxExtender10" targetcontrolid="up_tb4" filtertype="Numbers, LowercaseLetters, Custom" validchars=".@" runat="server"></ajax:filteredtextboxextender>
</td>
</tr>
<tr>
<td>
<label>DOB</label>
</td>
<td>
<asp:TextBox ID="up_tb5" runat="server" Enabled="false"></asp:TextBox>
<ajax:calendarextender id="CalendarExtender2" runat="server" popupbuttonid="ImageButton1" targetcontrolid="up_tb5"></ajax:calendarextender>
<asp:ImageButton ID="ImageButton1" runat="server" ImageUrl="~/img/calendar146.png" Width="16px" Height="16px" />
</td>
</tr>
<tr>
<td>
<label>USERNAME</label>
</td>
<td>
<asp:TextBox ID="up_tb6" runat="server"></asp:TextBox>
<ajax:filteredtextboxextender id="FilteredTextBoxExtender12" targetcontrolid="up_tb6" filtertype="Numbers, LowercaseLetters, Custom" validchars=".@" runat="server"></ajax:filteredtextboxextender>
</td>
</tr>
<tr>
<td>
<label>PASSWORD</label>
</td>
<td>
<asp:TextBox ID="up_tb7" runat="server" TextMode="Password"></asp:TextBox>
</td>
</tr>
<tr>
<td colspan="2">
<asp:Button ID="up_tb8" CssClass="btn btn-success" runat="server" Text="UPDATE" OnClick="up_tb8_Click" />
</td>
</tr>
</tbody>
</table>
<asp:ValidationSummary ID="ValidationSummary2" runat="server"
DisplayMode="BulletList" ShowSummary="true" HeaderText="Errors:" />
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
</ContentTemplate>
</asp:UpdatePanel>
</form>
我正在从代码后面加载模式并从代码隐藏填充其字段。 以下是我的代码隐藏代码:
protected void up_tb8_Click(object sender, EventArgs e)
var db = new dbDataContext();
Employee emp = new Employee();
db.Sp_Updatevalue(up_id, up_tb1.Text, up_tb2.Text, up_tb3.Text, up_tb4.Text, Convert.ToDateTime(up_tb5.Text), up_tb6.Text, up_tb7.Text);
ScriptManager.RegisterStartupScript(this, this.GetType(), "Pop", "ClosePopup();", true);
当我单击更新按钮时,它成功运行了我的更新存储过程并更新了数据库中的值。问题是当数据更新模式弹出窗口消失但其暗灰色背景仍然固定在我的屏幕上时我想在我的记录更新并且我的网格视图刷新并显示我更新的记录时正确关闭模式。
【问题讨论】:
请参阅"Should questions include “tags” in their titles?",其中的共识是“不,他们不应该”! 【参考方案1】:这段代码运行得非常好......
c#:
ScriptManager.RegisterStartupScript(Page, Page.GetType(), "ModalHide", "$('body').removeClass('modal-open');$('.modal-backdrop').remove();$('#Div3').hide();", true);
VB.Net:
ScriptManager.RegisterStartupScript(me, me.GetType(), "ModalHide", "$('body').removeClass('modal-open');$('.modal-backdrop').remove();$('#Div3').hide();", true)
【讨论】:
【参考方案2】:将 Id 属性 & runat="server" 添加到关闭按钮。
在 C# 代码后面,
btnId1.Attributes.Add("class", "close");
这里btnId1是关闭按钮的Id名称。
【讨论】:
【参考方案3】:ScriptManager.RegisterStartupScript(Page, Page.GetType(), "#myModal1", "$('body').removeClass('modal-open');$('.modal-backdrop').remove();", true);
【讨论】:
请explain为什么通过添加信息解决了答案【参考方案4】:你可以试试这个:
ScriptManager.RegisterStartupScript(Page, Page.GetType(), "#myModal", "$('body').removeClass('modal-open');$('.modal-backdrop').remove();$('#myModal').hide();", true);
它对我有用..!
【讨论】:
【参考方案5】:如果用户控件(ascx)被包裹在模态框内,那么:
ScriptManager.RegisterStartupScript(this, this.GetType(), "Pop", "$('#myModal').modal('hide');", true);
不会工作。 您应该使用 this.Page 而不是 this。
正确的解决方案:
ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "Pop", "$('#myModal').modal('hide');", true);
【讨论】:
【参考方案6】:我的应用程序中有类似的东西。我通过单击按钮重新绑定数据库中的数据来刷新我的网格。在 javascript closepopup()
函数中,关闭模式后,我调用将刷新我的数据网格的按钮单击事件。
您可以像我一样创建一个隐藏按钮进行绑定并执行点击事件。
一些代码示例:
这是刷新按钮:
<asp:Button ID="btnClearFilter" runat="server" Text="Refresh" onclick="btnClearFilter_Click" />
后面的代码:
protected void btnClearFilter_Click(object sender, EventArgs e)
FillGrid(); //here I bind to datagrid
当弹出窗口关闭时:
function closepopup()
$find('thisModalPopupExtender').hide();
document.getElementById("<%= btnClearFilter.ClientID %>").click(); //click event on refresh button
不是最好的解决方案,但它有效:)
【讨论】:
【参考方案7】:您可以更改服务器按钮 -
<asp:Button ID="up_tb8" CssClass="btn btn-success" runat="server" Text="UPDATE" OnClick="up_tb8_Click" />
到这样的事情 -
<button id="up_tb8" type="button" class="btn btn-default" data-dismiss="modal" runat="server" onserverclick="up_tb8_Click">UPDATE</button>
希望这会奏效
【讨论】:
【参考方案8】:你可以试试这个:
ScriptManager.RegisterStartupScript(this, this.GetType(), "Pop", "$('#myModal').modal('hide');", true);
或者您可以在您的 JS 文件中定义一个 ClosePopup 函数来执行此操作,然后在您执行此操作时调用它。
function ClosePopup()
$('#myModal').modal('hide');
【讨论】:
正如我在问题中提到的那样,模式窗口已通过使用上面的代码关闭,但暗灰色背景仍然存在,并且 gridview 未显示更新值,除非我通过单击 chrome 刷新按钮重新加载整个页面。请帮助我正确关闭模态。如果我在 asp.net 按钮内使用data-dismiss="modal"
属性,则其关闭模式正确但不更新记录。
@AhmerAliAhsan 您是否遇到过将背景(暗灰色背景)也隐藏起来的问题?以上是关于如何从后面的代码中关闭引导模式?的主要内容,如果未能解决你的问题,请参考以下文章
如何从作为wpf mvvm模式中的窗口打开的视图模型中关闭用户控件?