2013-05-05 53 views
0

我正在使用Visual Studio 2010與框架3.5和Ajax控件工具包.NET 3.5。asp.net,requiredfieldvalidator禁用代碼背後的事件

我在一個asp.net web表單網站上工作。

在表單我有這樣的:一個文本框,一個的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代碼隱藏)。只需在Button2標記中使用OnclientClick屬性

+0

謝謝!我所做的是刪除OnInit事件,並將OnInit事件代碼放在事件後面的Button2_Click代碼中。來自OnInit事件的代碼必須稍微修改,以便它可以在Button2_Click事件後面的代碼上運行。再次感謝! – trek 2013-05-06 02:31:40

相關問題