の中CustomValidator
にあるWizard
コントロールの中にある がありUpdatePanel
ます。
がなくてもUpdatePanel
、すべてが期待どおりに機能しますが、IE9 ではUpdatePanel
が追加されて初めておかしくなります。
ウィザードのステップ内にGridView
、検索によって入力された があり、すべて正常に機能します。
<asp:CustomValidator ID="cvSelectedUser" runat="server"
CssClass="Validator"
ErrorMessage="You must select a user to alter before you may continue"
OnServerValidate="cvSelectedUser_ServerValidate">
</asp:CustomValidator>
<asp:Panel ID="pSearchExisting" runat="server"
Height="120px"
ScrollBars="Vertical">
<asp:GridView ID="gvSearchExisting" runat="server"
AutoGenerateColumns="false"
DataKeyNames="UniqueID"
EmptyDataText="No users found from your search."
Width="95%">
<AlternatingRowStyle CssClass="GridViewAlternatingRow" />
<HeaderStyle CssClass="GridViewHeader" />
<SelectedRowStyle CssClass="GridViewSelectedRow" />
<Columns>
<asp:CommandField ShowSelectButton="True" />
<asp:BoundField DataField="EmployeeID" HeaderText="EmployeeID" SortExpression="EmployeeID" />
<asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" />
<asp:BoundField DataField="UserID" HeaderText="User ID" SortExpression="UserID" />
</Columns>
</asp:GridView>
</asp:Panel>
これCustomValidator
は、続行する前にユーザーが検索結果を選択したことを確認するために使用され、そうでない場合にのみユーザーがウィザードの次の手順に進むのを防ぎます。
protected void cvSelectedUser_ServerValidate(object sender, ServerValidateEventArgs e)
{
e.IsValid = true;
if (gvSearchExisting.SelectedIndex == -1)
e.IsValid = false;
}
これは、ウィザード イベントで確認されています。
protected void wUserID_NextButtonClick(object sender, WizardNavigationEventArgs e)
{
if (Page.IsValid == false)
return;
// process navigation
}
IE9 (のみ) で発生する奇妙なことは、ウィザードの [次へ] ボタンをクリックしたときに からレコードを選択しなかった場合GridView
、次のステップに進むことができず、CustomValidator
エラー メッセージが表示されないことです。 .
ユーザーは次へを押し続けることができ、エラー メッセージは表示されません。ただし、奇妙なことに、ページをクリックして [次へ] ボタンのフォーカスを失い、[次へ] ボタンをもう一度クリックすると、エラー メッセージが表示されます。
さらに厄介なことに、これは Chrome、Firefox、IE8 などで期待どおりに機能しますが、IE9 では機能しません。
おさらいとして
IE9 でエラー メッセージが表示されない
- ユーザーを選択しないでください
- [次へ] ボタンを何度でもクリックします
- メッセージが表示されない
IE9 でエラー メッセージが表示される
- ユーザーを選択しないでください
- [次へ] ボタンをクリックします
- [次へ] ボタンのフォーカスを外します (背景の空白など、ページ上の別の場所をクリックします)。
- [次へ] ボタンをもう一度クリックします
- メッセージが表示されます
これを修正する方法について何か考えはありますか?
https://stackoverflow.com/a/12926317/935779経由でハックのように見える回避策を見つけました。これは、IE9 を強制的に互換モードにするだけです。私はむしろ適切な修正を望みます。
<meta http-equiv="X-UA-Compatible" content="IE=IE8" />