作成日: 2015/10/20 最終更新日: 2016/01/20
文書種別
不具合
状況
修正済み
詳細
ポストバック時にC1Tabsの選択状態が初期化されます。
本事象は下記の条件を満たす場合に発生します。
・PageクラスのMaintainScrollPositionOnPostbackプロパティが"True"に設定されている
・ページ内にC1Dialogが配置されている
【再現方法】
1.サンプルを実行します
2.[Tab2]をクリックします
3.[ポストバック]ボタンをクリックします
結果:タブの選択状態が初期化されます(Tab1が選択されます)
◎サンプルコード(aspx)
本事象は下記の条件を満たす場合に発生します。
・PageクラスのMaintainScrollPositionOnPostbackプロパティが"True"に設定されている
・ページ内にC1Dialogが配置されている
【再現方法】
1.サンプルを実行します
2.[Tab2]をクリックします
3.[ポストバック]ボタンをクリックします
結果:タブの選択状態が初期化されます(Tab1が選択されます)
◎サンプルコード(aspx)
<%@ Page … MaintainScrollPositionOnPostback="True" %>
<%@ Register Assembly="C1.Web.Wijmo.Controls.4" Namespace="C1.Web.Wijmo.Controls.C1Tabs" 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:C1Tabs ID="C1Tabs1" runat="server">
<Pages>
<wijmo:C1TabPage runat="server" Text="Tab1" StaticKey="" ID="C1Tabs1_Tab1">
</wijmo:C1TabPage>
<wijmo:C1TabPage runat="server" Text="Tab2" StaticKey="" ID="C1Tabs1_Tab2">
<asp:Button ID="Button1" runat="server" Text="ポストバック" />
</wijmo:C1TabPage>
</Pages>
</wijmo:C1Tabs>
<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.C1Tabs" 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:C1Tabs ID="C1Tabs1" runat="server">
<Pages>
<wijmo:C1TabPage runat="server" Text="Tab1" StaticKey="" ID="C1Tabs1_Tab1">
</wijmo:C1TabPage>
<wijmo:C1TabPage runat="server" Text="Tab2" StaticKey="" ID="C1Tabs1_Tab2">
<asp:Button ID="Button1" runat="server" Text="ポストバック" />
</wijmo:C1TabPage>
</Pages>
</wijmo:C1Tabs>
<wijmo:C1Dialog ID="C1Dialog1" runat="server" ShowOnLoad="False">
</wijmo:C1Dialog>
</div>
</form>
</body>
</html>
回避方法
この問題はバージョン4.0.20153.223で修正されました。
修正版の適用方法については、アップデートの方法を参照してください。
修正版を適用しない場合の回避方法は次のとおりです。
C1Tabsのselectイベントを処理し、非表示フィールドでC1Tabsの選択インデックス値を保存します。その後、ページのPostBack処理にてSelectedに再設定します。
◎サンプルコード(aspx)
◎サンプルコード(VB)
◎サンプルコード(C#)
修正版の適用方法については、アップデートの方法を参照してください。
修正版を適用しない場合の回避方法は次のとおりです。
C1Tabsのselectイベントを処理し、非表示フィールドでC1Tabsの選択インデックス値を保存します。その後、ページのPostBack処理にてSelectedに再設定します。
◎サンプルコード(aspx)
<%@ Page … MaintainScrollPositionOnPostback="True" %>
<%@ Register Assembly="C1.Web.Wijmo.Controls.4" Namespace="C1.Web.Wijmo.Controls.C1Tabs" 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 () {
$("#C1Tabs1").c1tabs({
select: function (e, args) {
$("#HiddenField1").val(args.index);
}
});
});
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<wijmo:C1Tabs ID="C1Tabs1" runat="server">
<Pages>
<wijmo:C1TabPage runat="server" Text="Tab1" StaticKey="" ID="C1Tabs1_Tab1">
</wijmo:C1TabPage>
<wijmo:C1TabPage runat="server" Text="Tab2" StaticKey="" ID="C1Tabs1_Tab2">
<asp:Button ID="Button1" runat="server" Text="ポストバック" />
</wijmo:C1TabPage>
</Pages>
</wijmo:C1Tabs>
<wijmo:C1Dialog ID="C1Dialog1" runat="server" ShowOnLoad="False">
</wijmo:C1Dialog>
<asp:HiddenField ID="HiddenField1" runat="server" />
</div>
</form>
</body>
</html>
<%@ Register Assembly="C1.Web.Wijmo.Controls.4" Namespace="C1.Web.Wijmo.Controls.C1Tabs" 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 () {
$("#C1Tabs1").c1tabs({
select: function (e, args) {
$("#HiddenField1").val(args.index);
}
});
});
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<wijmo:C1Tabs ID="C1Tabs1" runat="server">
<Pages>
<wijmo:C1TabPage runat="server" Text="Tab1" StaticKey="" ID="C1Tabs1_Tab1">
</wijmo:C1TabPage>
<wijmo:C1TabPage runat="server" Text="Tab2" StaticKey="" ID="C1Tabs1_Tab2">
<asp:Button ID="Button1" runat="server" Text="ポストバック" />
</wijmo:C1TabPage>
</Pages>
</wijmo:C1Tabs>
<wijmo:C1Dialog ID="C1Dialog1" runat="server" ShowOnLoad="False">
</wijmo:C1Dialog>
<asp:HiddenField ID="HiddenField1" runat="server" />
</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
C1Tabs1.Selected = index
End If
End If
End Sub
If (IsPostBack) Then
Dim index As Integer
If Integer.TryParse(HiddenField1.Value, index) Then
C1Tabs1.Selected = 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)) {
C1Tabs1.SelectedIndex = index;
}
}
}
if (IsPostBack) {
int index = 0;
if (Int32.TryParse(HiddenField1.Value, out index)) {
C1Tabs1.SelectedIndex = index;
}
}
}
旧文書番号
81480