2012-03-02 2 views
0

Я искал онлайн некоторое время, пытаясь выяснить, как динамически отображать диалоговое окно 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); 
     } 

    } 
+0

У вас есть ошибка, и если да, то что она говорит? Кроме того, используется $ ("# dialog") более одного раза? – shanabus

+0

Я только что проверил инструменты разработчика IE, и у меня есть ожидаемая «ожидаемая объект» в $ (function() { initializedialog(); }); – jre247

+0

Я также не использую $ ("# dialog") более одного раза – jre247

ответ

1

Вы также выполняете Response.Redirect. Не уверен, что на самом деле у вас будет время для отображения любых зарегистрированных скриптов, потому что вы перейдете непосредственно на другую страницу.

На какой странице вы хотите отобразить всплывающее окно?

+0

Я пробовал комментировать проект response.redirect и все же всплывающее окно не работало , Я хочу, чтобы всплывающее окно отображалось на register.aspx, где находится код для этой страницы. Благодаря! – jre247

+1

documentent.ready не выполняется при выполнении частичной обратной передачи (через UpdatePanel). Попробуйте использовать $ (window) .load (function() {initializedialog(); showDialog (\ "" + sb.ToString() + "\");}). – Ronald

+0

Я попытался добавить ваши предложения. Тем не менее, я получаю сообщение об ошибке «ожидаемый объект» в $ (function() {initializedialog();}); Любая идея, что вызывает это? – jre247

0

Не .remove() диалоговое! Возможно, вы искали .empty() вместо этого?

+0

Я пробовал делать .empty(), но по-прежнему не открывается диалог:/ – jre247

Смежные вопросы