0

の中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" />
4

0 に答える 0