作成日: 2015/10/19 最終更新日: 2016/01/20
文書種別
不具合
状況
修正済み
詳細
ポストバック時にC1ComboBoxの選択値が初期化されます。
本事象は下記の条件を満たす場合に発生します。
・PageクラスのMaintainScrollPositionOnPostbackプロパティが"True"に設定されている
・ページ内にC1Dialogが配置されている
【再現方法】
1.サンプルを実行します
2.コンボボックスで任意の項目を選択します
3.[ポストバック]ボタンをクリックします
結果:ポストバックが発生し、再表示された画面にてコンボボックスの選択値が初期化されます
◎サンプルコード(aspx)
本事象は下記の条件を満たす場合に発生します。
・PageクラスのMaintainScrollPositionOnPostbackプロパティが"True"に設定されている
・ページ内にC1Dialogが配置されている
【再現方法】
1.サンプルを実行します
2.コンボボックスで任意の項目を選択します
3.[ポストバック]ボタンをクリックします
結果:ポストバックが発生し、再表示された画面にてコンボボックスの選択値が初期化されます
◎サンプルコード(aspx)
<%@ Page … MaintainScrollPositionOnPostback="True" %>
<%@ Register Assembly="C1.Web.Wijmo.Controls.4" Namespace="C1.Web.Wijmo.Controls.C1ComboBox" TagPrefix="wijmo" %>
<%@ Register Assembly="C1.Web.Wijmo.Controls.4" Namespace="C1.Web.Wijmo.Controls.C1Dialog" TagPrefix="wijmo" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<wijmo:C1ComboBox ID="C1ComboBox1" runat="server">
<Items>
<wijmo:C1ComboBoxItem Text="c++" Value="c++" />
<wijmo:C1ComboBoxItem Text="java" Value="java" />
<wijmo:C1ComboBoxItem Text="php" Value="php" />
</Items>
</wijmo:C1ComboBox>
<asp:Button ID="Button1" runat="server" Text="ポストバック" />
<wijmo:C1Dialog ID="C1Dialog1" runat="server" ShowOnLoad="False">
</wijmo:C1Dialog>
</div>
</form>
</body>
</html>
<%@ Register Assembly="C1.Web.Wijmo.Controls.4" Namespace="C1.Web.Wijmo.Controls.C1ComboBox" TagPrefix="wijmo" %>
<%@ Register Assembly="C1.Web.Wijmo.Controls.4" Namespace="C1.Web.Wijmo.Controls.C1Dialog" TagPrefix="wijmo" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<wijmo:C1ComboBox ID="C1ComboBox1" runat="server">
<Items>
<wijmo:C1ComboBoxItem Text="c++" Value="c++" />
<wijmo:C1ComboBoxItem Text="java" Value="java" />
<wijmo:C1ComboBoxItem Text="php" Value="php" />
</Items>
</wijmo:C1ComboBox>
<asp:Button ID="Button1" runat="server" Text="ポストバック" />
<wijmo:C1Dialog ID="C1Dialog1" runat="server" ShowOnLoad="False">
</wijmo:C1Dialog>
</div>
</form>
</body>
</html>
回避方法
この問題はバージョン4.0.20153.223で修正されました。
修正版の適用方法については、アップデートの方法を参照してください。
修正版を適用しない場合の回避方法は次のとおりです。
C1ComboBoxのselectedIndexChangedイベントを処理し、非表示フィールドでC1ComboBoxの選択インデックス値を保存します。その後、ページのPostBack処理にてSelectedIndexに再設定します。
◎サンプルコード(aspx)
◎サンプルコード(VB)
◎サンプルコード(C#)
修正版の適用方法については、アップデートの方法を参照してください。
修正版を適用しない場合の回避方法は次のとおりです。
C1ComboBoxのselectedIndexChangedイベントを処理し、非表示フィールドでC1ComboBoxの選択インデックス値を保存します。その後、ページのPostBack処理にてSelectedIndexに再設定します。
◎サンプルコード(aspx)
<%@ Page … MaintainScrollPositionOnPostback="True" %>
<%@ Register Assembly="C1.Web.Wijmo.Controls.4" Namespace="C1.Web.Wijmo.Controls.C1ComboBox" TagPrefix="wijmo" %>
<%@ Register Assembly="C1.Web.Wijmo.Controls.4" Namespace="C1.Web.Wijmo.Controls.C1Dialog" TagPrefix="wijmo" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<script>
// 回避策
$(function () {
$("#C1ComboBox1").c1combobox({
selectedIndexChanged: function (e, args) {
$("#HiddenField1").val(args.newIndex);
}
});
});
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<wijmo:C1ComboBox ID="C1ComboBox1" runat="server">
<Items>
<wijmo:C1ComboBoxItem Text="c++" Value="c++" />
<wijmo:C1ComboBoxItem Text="java" Value="java" />
<wijmo:C1ComboBoxItem Text="php" Value="php" />
</Items>
</wijmo:C1ComboBox>
<asp:Button ID="Button1" runat="server" Text="ポストバック" />
<asp:HiddenField ID="HiddenField1" runat="server" />
<wijmo:C1Dialog ID="C1Dialog1" runat="server" ShowOnLoad="False">
</wijmo:C1Dialog>
</div>
</form>
</body>
</html>
<%@ Register Assembly="C1.Web.Wijmo.Controls.4" Namespace="C1.Web.Wijmo.Controls.C1ComboBox" TagPrefix="wijmo" %>
<%@ Register Assembly="C1.Web.Wijmo.Controls.4" Namespace="C1.Web.Wijmo.Controls.C1Dialog" TagPrefix="wijmo" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<script>
// 回避策
$(function () {
$("#C1ComboBox1").c1combobox({
selectedIndexChanged: function (e, args) {
$("#HiddenField1").val(args.newIndex);
}
});
});
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<wijmo:C1ComboBox ID="C1ComboBox1" runat="server">
<Items>
<wijmo:C1ComboBoxItem Text="c++" Value="c++" />
<wijmo:C1ComboBoxItem Text="java" Value="java" />
<wijmo:C1ComboBoxItem Text="php" Value="php" />
</Items>
</wijmo:C1ComboBox>
<asp:Button ID="Button1" runat="server" Text="ポストバック" />
<asp:HiddenField ID="HiddenField1" runat="server" />
<wijmo:C1Dialog ID="C1Dialog1" runat="server" ShowOnLoad="False">
</wijmo:C1Dialog>
</div>
</form>
</body>
</html>
◎サンプルコード(VB)
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If (IsPostBack) Then
Dim index As Integer
If Integer.TryParse(HiddenField1.Value, index) Then
C1ComboBox1.SelectedIndex = index
End If
End If
End Sub
If (IsPostBack) Then
Dim index As Integer
If Integer.TryParse(HiddenField1.Value, index) Then
C1ComboBox1.SelectedIndex = index
End If
End If
End Sub
◎サンプルコード(C#)
protected void Page_Load(object sender, EventArgs e) {
if (IsPostBack) {
int index = 0;
if (Int32.TryParse(HiddenField1.Value, out index)) {
C1ComboBox1.SelectedIndex = index;
}
}
}
if (IsPostBack) {
int index = 0;
if (Int32.TryParse(HiddenField1.Value, out index)) {
C1ComboBox1.SelectedIndex = index;
}
}
}
旧文書番号
81479