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,但我不希望它與按鈕
這是爲什麼發生,我怎麼能解決這個問題產生衝突?
謝謝...
謝謝!我所做的是刪除OnInit事件,並將OnInit事件代碼放在事件後面的Button2_Click代碼中。來自OnInit事件的代碼必須稍微修改,以便它可以在Button2_Click事件後面的代碼上運行。再次感謝! – trek 2013-05-06 02:31:40