UpdatePanelに配置されたコントロールで、ページ更新後にドロップダウンオブジェクトが表示されたままになる場合がある

文書番号 : 37728     文書種別 : 不具合     登録日 : 2015/01/27     最終更新日 : 2015/05/11
文書を印刷する
対象製品
InputMan for ASP.NET 7.0J
状況
修正済み
詳細
日付コントロールや数値コントロールなどをUpdatePanel上に配置し、カレンダーや電卓などのドロップダウンオブジェクトを表示しているときに非同期ポストバックが発生すると、ページの更新後にドロップダウンオブジェクトが表示されたままになります。
このときドロップダウン部分以外の場所をクリックしてもドロップダウンオブジェクトが閉じません。

この現象は日付、数値のほか、日付時刻およびコンボコントロールで発生します。
回避方法
この問題はService Pack 4(v7.0.2015.511)で修正されました。
不具合を修正した最新のサービスパックは、アップデートページからダウンロードできます。

Service Pack 4より前のバージョンでは以下の方法で回避可能です。

UpdatePanelによる非同期ポストバックが実行される前に、コントロールのSetDroppedDownクライアント側プロパティをfalseに設定しドロップダウンオブジェクトを閉じることで回避できます。
以下のように、ページ上に配置したコンボ、数値、日付時刻、日付コントロールのドロップダウンオブジェクトを閉じるクライアント側スクリプトを実装します。

[Javascript]
<script type="text/javascript">
    window.onload = function () {
        var mng = Sys.WebForms.PageRequestManager.getInstance();
        mng.add_beginRequest(BeginRequestHandler);
    };
    function BeginRequestHandler() {
        FindIMControl('GcComboBox1').SetDroppedDown(false);
        FindIMControl('GcNumber1').SetDroppedDown(false);
        FindIMControl('GcDateTime1').SetDroppedDown(false);
        FindIMControl('GcDate1').SetDroppedDown(false);
    }
</script>