2009-11-03 4 views
0

Я работал с: ASP.Net: Ajax check for registration as a user?ASP.Net: регистрация вопрос Ajax

Он имеет несколько ошибок, я не понимаю:

1) Он работал только один раз для одного текстового поля. Если текстовое поле отредактировано во второй раз, точка останова не будет нажата. Зачем?

2) Для моей электронной почты у меня есть чек, что нет дубликата, когда есть один, должен быть установлен панель ошибок, но она не отображается.

 protected void txtEMail_TextChanged(object sender, EventArgs e) 
    { 
     Business.UserHandling uh = new Business.UserHandling(); 
     if (uh.CheckIfEmailExists(txtEMail.Text)) 
     { 
      panelHelp.Visible = true; 
      lblHelp.Text = "EMail existriert schon."; 
     } 
    } 

ответ

2

Когда режим обновления условна

<asp:scriptmanager runat="server" id="sm1" /> 
<asp:updatepanel runat="server" id="up1" updatemode="Conditional"> // here the updatemode is conditional ... 
<contenttemplate> 
    <asp:textbox runat="server" id="tbUsername" autopostback="true" ontextchanged="tbUsername_TextChanged" /> 
    <asp:customvalidator runat="server" text="Email already used" id="cusValEmail" /> 
    <asp:textbox runat="server" id="tbPassword" /> 
</contenttemplate> 
</asp:updatepanel> 

Вам нужно позвонить

protected void txtEMail_TextChanged(object sender, EventArgs e) 
{ 
    Business.UserHandling uh = new Business.UserHandling(); 
    if (uh.CheckIfEmailExists(txtEMail.Text)) 
    { 
     panelHelp.Visible = true; 
     lblHelp.Text = "EMail existriert schon."; 
    } 
    up1.Update(); // call to update the update panel "up1" 
} 

Извините, я немного ржавый, это время, так как я использовал панели обновления.

+0

Отлично, спасибо – Kovu

0

После обновления панели обновлений вы должны повторно инициализировать javascript на html-элементах внутри него.

Таким образом, к концу вашего метода вы можете добавить:

protected void txtEMail_TextChanged(object sender, EventArgs e) 
{ 
    Business.UserHandling uh = new Business.UserHandling(); 
    if (uh.CheckIfEmailExists(txtEMail.Text)) 
    { 
     panelHelp.Visible = true; 
     lblHelp.Text = "EMail existriert schon."; 
    } 
    // Re-init javascript 
    ScriptManager.RegisterStartupScript(Type, String, "add onchange js here", Boolean); 
} 

см http://msdn.microsoft.com/en-us/library/system.web.ui.clientscriptmanager.registerstartupscript.aspx

+0

У меня нет onChange JavaScript ?! – Kovu

+0

Извините, я долго не смотрел ссылку. Rippo использует событие ontextchanged ..., в котором ASP пишет для вас файл onchange. –

+1

Если updatemode условно, вы вызвали up1.Update()? –

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