UpdatePanelにコンボコントロールを動的に追加すると、ドロップダウンリストが開閉できなくなる場合がある

文書番号 : 39079     文書種別 : 不具合     登録日 : 2015/08/20     最終更新日 : 2016/02/19
文書を印刷する
対象製品
InputMan for ASP.NET 7.0J
状況
修正済み
詳細
ページ上に配置しているコンボコントロールを、ページのLoadイベントでUpdatePanel上に移動すると、非同期ポストバック後にドロップダウンリストの開閉ができなくなります。

【再現コード】
[aspxファイル(Visual Basic, C#共通)]
・・・
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
        <asp:Button ID="Button1" runat="server" Text="Button" />
    </ContentTemplate>
</asp:UpdatePanel>

<im_combo:GcComboBox ID="GcComboBox1" runat="server" HasLoadFromXml="True">
</im_combo:GcComboBox>
・・・

[Visual Basic]
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
    UpdatePanel1.ContentTemplateContainer.Controls.Add(GcComboBox1)
End Sub

[C#]
protected void Page_Load(object sender, EventArgs e)
{
    UpdatePanel1.ContentTemplateContainer.Controls.Add(GcComboBox1);
}

デザイン画面でUpdatePanel上にコンボコントロールがすでに配置されている場合、本現象は発生しません。
回避方法
この問題はService Pack 5(v7.0.2016.219)で修正されました。
不具合を修正した最新のサービスパックは、アップデートページからダウンロードできます。

Service Pack 5より前のバージョンでは以下の方法で回避可能です。
コンボコントロールをUpdatePanelへ配置する処理を、ページのLoadイベントでは行わず、OnPreInitイベントをオーバーロードして行います。

[Visual Basic]
Protected Overrides Sub OnPreInit(e As EventArgs)
    MyBase.OnPreInit(e)
    UpdatePanel1.ContentTemplateContainer.Controls.Add(GcComboBox1)
End Sub

[C#]
protected override void OnPreInit(EventArgs e)
{
    base.OnPreInit(e);
    UpdatePanel1.ContentTemplateContainer.Controls.Add(GcComboBox1);
}