Я использую updatepanel
внутри всплывающего окна jQuery на странице asp.net. В этой updatepanel
меня есть два заполнителя. На одном заполнителе у меня есть форма с кнопками. Когда я нажимаю кнопку сохранения, запись сохраняется в базе данных. Теперь после сохранения записи. Я хочу скрыть этот заполнитель формой.
И показать другой placeholder, который является благодарностью за сообщение. Как мне это сделать?
Я делаю так:
RegisterPH.Visible = false;
ThankYouPH.Visible = true;
ModalUpdatePanel.Update();
Моя html-разметка выглядит так:
<asp:UpdatePanel ID="ModalUpdatePanel" runat="server" UpdateMode="Conditional">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="btnRegister" EventName="Click" />
</Triggers>
<ContentTemplate>
<asp:PlaceHolder ID="RegisterPH" runat="server">
</asp:PlaceHolder>
<asp:PlaceHolder ID="ThankYouPH" runat="server" Visible="false">
<div class="row">
<div class="RegisterText2">
<asp:Literal ID="ThankYouContentLiteral" runat="server" Text="<%$ Resources:Register, ThankYouContent %>" />
</div>
</div>
</asp:PlaceHolder>
</ContentTemplate>
</asp:UpdatePanel>
Нужно ли мне использовать updatepanel
endrequest
функцию или зарегистрировать некоторый скрипт? Пожалуйста, предложите.
Похоже, это должно сработать. Убедитесь, что вы помещаете элемент управления <asp:ScriptManager/>
на свою страницу (или RadScriptManager, если вы используете Telerik, ToolkitScriptManager, если вы используете Microsoft AjaxToolkit и т.д.).
EDIT: Ниже приведен код, который работает правильно с использованием UpdatePanel
и модального диалога Bootstrap, о котором вы говорили:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="bootstrap.aspx.cs" Inherits="TestWeb.bootstrap" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="css/bootstrap.min.css" rel="stylesheet" media="screen">
<link rel="stylesheet" href="css/bootstrap-theme.min.css">
<script src="Scripts/jquery-1.8.2.js"></script>
<script src="js/bootstrap.min.js"></script>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<a data-toggle="modal" href="#myModal" class="btn btn-primary btn-lg">Launch demo modal</a>
<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-hidden="true">×</button>
<h4 class="modal-title">Modal title</h4>
</div>
<div class="modal-body">
<asp:UpdatePanel ID="upd" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:PlaceHolder id="p1" runat="server">
<asp:Literal id="lit1" runat="server" Text="Placeholder 1" />
</asp:PlaceHolder>
<asp:PlaceHolder id="p2" runat="server" visible="false">
<asp:Literal id="lit2" runat="server" Text="Placeholder 2" />
</asp:PlaceHolder>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="btn" EventName="Click" />
</Triggers>
</asp:UpdatePanel>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<asp:Button ID="btn" runat="server" CssClass="btn btn-primary" Text="Save" OnClick="btn_Click" />
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div><!-- /.modal -->
</form>
</body>
</html>
И в коде:
protected void btn_Click(object sender, EventArgs e)
{
this.p1.Visible = false;
this.p2.Visible = true;
}
Я бы посоветовал вам создать тестовую страницу в вашем приложении только с этой разметкой, чтобы подтвердить, что она работает в вашей среде. Предполагая, что это так, я возьму ваш проблемный код и начну вытаскивать фрагменты. Возможно, поместите один и тот же текст во втором элементе управления Placeholder
вместо пары стилизованных div и Literal
который вытащит его текст из файла ресурсов. Прокомментируйте код обновления данных, чтобы все ваши кнопки "Сохранить" отображали видимость на двух элементах управления Placeholder
. Если вы все еще не можете заставить его работать после того, как вы удалите страницу до минимума, добавьте больше своего кода, и я еще раз посмотрю.
RegisterPH.visible = false ThankYouPH.visible = true
?