UpdatePanelにコンボコントロールを動的に追加すると、ドロップダウンリストが開閉できなくなる場合がある
対象製品
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上にコンボコントロールがすでに配置されている場合、本現象は発生しません。
【再現コード】
[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);
}
不具合を修正した最新のサービスパックは、アップデートページからダウンロードできます。
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);
}