チェンジセット 1785 (default)


以下の違いを無視:
日時:
2025/10/03 2:20:16 (3ヵ月前)
更新者:
hizuya@…
ログメッセージ:
  • framework/trunk からリビジョン [1783] をマージ。
    • 非表示にされたタブ以降がアクティブな状態で、それ以降にも表示されているタブがある場合、画面表示後アクティブなタブが変更されていない状態でポストバックされると、アクティブなタブが後ろ側にズレる問題を修正。
場所:
framework/branches/2.3.0
ファイル:
2個の更新

凡例:

未変更
追加
削除
  • framework/branches/2.3.0

  • framework/branches/2.3.0/WebLibrary/Sources/UI/WebControls/TabControl.cs

    r1744 r1785  
    110110        /// 選択中のタブのインデックス。 
    111111        /// </summary> 
     112        /// <remarks> 
     113        /// ポストバックされた際に、選択されているインデックスに変更なかった検出するためにコントロールステートに保持されます。 
     114        /// </remarks> 
    112115        [DebuggerBrowsable(DebuggerBrowsableState.Never)] 
    113116        private int selectedIndex = -1; 
     
    116119        /// 非表示の <see cref="TabItem"/> がある場合の、表示されている <see cref="TabItem"/> のインデックス番号の一覧。 
    117120        /// </summary> 
     121        /// ポストバックされた際に、実際のインデックスとクライアントサイドでのインデックスを変換するために、 
     122        /// 一部のタブが非表示になっている場合のみ値が設定されます。 
     123        /// この場合、コントロールステートに保持されます。 
    118124        private int[] visibleTabItemIndexes; 
     125 
     126        /// <summary> 
     127        /// クライアントサイドで見た選択中のタブのインデックス。 
     128        /// </summary> 
     129        /// <remarks> 
     130        /// このフィールドは、 <see cref="OnPreRender"/> で初期化され、ポストバックでは保持されないので注意が必要です。 
     131        /// </remarks> 
     132        private int clientSelectedIndex = -1; 
    119133 
    120134        /// <summary> 
     
    677691            if (visibleTabItemIndexes == null) 
    678692            { 
    679                 // すべてのタブアイテムが表示中だった場合 
     693                // すべてのタブアイテムが表示中だった場合はクライアントサイドから見たインデックス (postData) と実際のインデックスは同じ 
    680694                newSelectedIndex = postData; 
    681695            } 
     
    688702                } 
    689703 
     704                // クライアントサイドから見たインデックス (postData) から実際のインデックスに変換 
    690705                newSelectedIndex = visibleTabItemIndexes[postData]; 
    691706            } 
    692707 
     708            // 選択されているタブに変更が無かった場合 
    693709            if (selectedIndex == newSelectedIndex) 
    694710            { 
     
    696712            } 
    697713 
     714            // 選択されているタブに変更があった場合 
    698715            selectedIndex = newSelectedIndex; 
    699716            return true; 
     
    920937            StyleUtility.RegisterJQueryUI(); 
    921938 
    922             int clientSelectedIndex = -1; 
    923939            StringBuilder disabledList = null; 
    924940            if (tabItems != null && Visible) 
     
    10371053            wrapper.AddAttribute(HtmlTextWriterAttribute.Type, "hidden"); 
    10381054            wrapper.AddAttribute(HtmlTextWriterAttribute.Name, uniqueID); 
    1039             if (selectedIndex != -1) 
    1040             { 
    1041                 wrapper.AddAttribute(HtmlTextWriterAttribute.Value, selectedIndex.ToString(CultureInfo.InvariantCulture)); 
     1055            if (clientSelectedIndex != -1) 
     1056            { 
     1057                wrapper.AddAttribute(HtmlTextWriterAttribute.Value, clientSelectedIndex.ToString(CultureInfo.InvariantCulture)); 
    10421058            } 
    10431059 
詳しい使い方は TracChangeset を参照してください。