2013-05-05 3 views
0

Я использую Visual Studio 2010 с фреймворком 3.5 и Ajax Control Toolkit .NET 3.5.asp.net, requiredfieldvalidator отключение событий по коду за

Я работаю над веб-сайтом asp.net.

На форме у меня есть это: текстовое поле, в ImageButton, кнопки, календарь и RequiredFieldValidator:

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server"> 
    <p> 
     <br /> 
     <asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server"> 
</asp:ToolkitScriptManager> 

<asp:Label id="Label3" runat="server">Date</asp:Label> 
         <asp:textbox id="txtInitialDate" runat="server" Width="75px" MaxLength="10"></asp:textbox> 

          <asp:ImageButton ID="imgBegin" 
      ImageUrl="~/images/Icon1.jpeg" runat="server" 
           AlternateText="" Height="24px" Width="24px" /> 

     <asp:CalendarExtender ID="CalendarExtender1" runat="server" 
     TargetControlID="txtInitialDate" 
     PopupPosition="BottomLeft" PopupButtonID="imgBegin" 
     > 
     </asp:CalendarExtender> 

     <asp:requiredfieldvalidator id="RequiredFieldValidator1" runat="server" ErrorMessage="*" ControlToValidate="txtInitialDate" 
          Display="Dynamic"></asp:requiredfieldvalidator> 

<asp:button id="Button2" runat="server" Text="Send" onclick="Button2_Click"></asp:button> 
</asp:Content> 

код позади:

override protected void OnInit(EventArgs e) 
{ 
Button2.Attributes.Add("onclick", "javascript:" + Button2.ClientID + ".disabled=true;"  + "javascript:" + Button2.ClientID + ".value='Processing.';" + this.GetPostBackEventReference(Button2) + ";"); 
base.OnInit(e); 
} 


protected void Button2_Click(object sender, EventArgs e) 
{ 
string a = "some_value"; 
} 

взаимодействие здесь является то, что пользователь нажимает на ImageButton, показывает календарь, пользователь нажимает на дату и затем нажимает кнопку.

Проблема:

При запуске веб-сайт и нажмите на ImageButton первой и выбрать дату, то при нажатии на кнопку событий не увольняют.

Но если я комментирую код валидатора:

<asp:requiredfieldvalidator id="RequiredFieldValidator1" runat="server" ErrorMessage="*" ControlToValidate="txtInitialDate" 
          Display="Dynamic"></asp:requiredfieldvalidator> 

Затем события увольняют правильно.

Я хочу, чтобы иметь возможность использовать RequiredFieldValidator, но я не хочу, чтобы создать конфликт с кнопкой

Почему это происходит и как я могу решить эту проблему?

Благодаря ...

ответ

1

Использование CausesValidation=False в кнопки изображение разметки:

<asp:ImageButton ID="imgBegin" CausesValidation="False" ImageUrl="~/images/Icon1.jpeg" runat="server" Height="24px" Width="24px" /> 

Вы можете добавить, что JavaScript для Button2 в разметке также (вместо OnInit код-сзади). Просто используйте атрибут OnclientClick в значении Button2 вверх

+0

Спасибо! Я сделал это, чтобы удалить событие OnInit, и я поместил код события OnInit в код Button2_Click за событием. Код из события OnInit должен был быть изменен немного, чтобы он мог запускаться в коде за событием Button2_Click. Еще раз спасибо! – trek

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