Я искал онлайн некоторое время, пытаясь выяснить, как динамически отображать диалоговое окно jquery из кода, и до сих пор мне не повезло.Как отобразить диалоговое окно jquery из codebehind
Я пытаюсь открыть диалоговое окно jquery после того, как пользователь закончит регистрацию для моего сайта и нажимает кнопку «создать пользователя». Я хочу, чтобы в диалоговом окне появилось сообщение «Спасибо, что зарегистрировались!» если имя пользователя, введенное пользователем, еще не существует в базе данных.
Вот что у меня есть и не работает. Я могу использовать jquery с другими вещами, кроме этой одной задачи. Любая помощь? Спасибо!
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Label ID="lblError" ForeColor="Red" runat="server"></asp:Label>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="CreateUserButton" EventName="Click" />
</Triggers>
</asp:UpdatePanel>
<script type="text/javascript">
$(function() {
initializedialog();
});
function initializedialog() {
$("#dialog").dialog({
autoOpen: false,
hide: 'blind',
minHeight: 125,
maxWidth: 300,
show: 'blind',
title: 'Thanks!'
});
}
//This function is called from the script injected from code-behind.
function showDialog(message) {
$("#dialog").remove();
$("#dialog").append(message);
$("#dialog").dialog('open');
}
</script>
<div id="pnlpopup">
<p class="submitButton">
<asp:Button ID="CreateUserButton" runat="server" CommandName="MoveNext" Text="Create User"
OnClick="CreateUserButton_Click"
ValidationGroup="RegisterUserValidationGroup" SkinID="btnLoginRegister"
Height="29px" Width="107px" />
</p>
</div>
<div id="dialog" style="display: none">
<asp:Label ID="lblMessage" runat="server" Text="Thank you registering!">
</asp:Label>
</div>
код позади:
protected void CreateUserButton_Click(object sender, EventArgs e)
{
bool bStatus = false;
DataTable dt = new DataTable();
string strRedirect = "";
DataRow dr = null;
//retrieve userInput fields
string stringUserName = UserName.Text;
string stringPassword = Password.Text;
string stringConfirmPassword = ConfirmPassword.Text;
//set database user role to default
string userRole = "db_datawriter";
//check if username already exists in database
dr = Data_Access_Management.DataAccess.GetUser(stringUserName);
if (dr != null) // Check if the DataRow returns any data from database
{
lblError.Text = "That Username already exists.";
bStatus = true;
}
if (!bStatus)
{
//insert user into user table in database
Data_Access_Management.DataAccess.InsertUser(stringUserName, stringPassword, userRole);
strRedirect = CommonStrings.SessionLoginPage;
//string script = "$('#dialog').dialog('open');";
//ClientScript.RegisterStartupScript(GetType(), "alert('foo');", script, true);
StringBuilder sb = new StringBuilder();
string script = "$(function(){initializedialog();showDialog(\"" + sb.ToString() + "\");});";
ScriptManager.RegisterStartupScript(this, this.Page.GetType(), "dialog", script, true);
//redirect to contact.aspx
Response.Redirect(strRedirect);
}
}
У вас есть ошибка, и если да, то что она говорит? Кроме того, используется $ ("# dialog") более одного раза? – shanabus
Я только что проверил инструменты разработчика IE, и у меня есть ожидаемая «ожидаемая объект» в $ (function() { initializedialog(); }); – jre247
Я также не использую $ ("# dialog") более одного раза – jre247