チェンジセット 1640 (default)


以下の違いを無視:
日時:
2024/02/28 19:04:18 (7ヵ月前)
更新者:
hizuya@…
ログメッセージ:
  • RowStyleField で CssClass をマージできる機能を追加。
場所:
framework/trunk
ファイル:
7個の更新

凡例:

未変更
追加
削除
  • framework/trunk/WebApplication/Styles/main.css

    r1223 r1640  
    7373        color: #990000; 
    7474} 
     75 
     76.list-row-check2 
     77{ 
     78        color: #009999; 
     79        font-weight: bold; 
     80} 
  • framework/trunk/WebApplication/UI/WebControls/RowStyleFieldPage.aspx

    r823 r1640  
    1 <%@ Page 
     1<%@ Page 
    22    Language="C#" 
    33    CodeBehind="RowStyleFieldPage.aspx.cs" 
     
    1717 
    1818            <h1>UnitTestWeb/UI/WebControls/RowStyleFieldPage.aspx</h1> 
    19              
     19 
    2020            <asp:Button ID="PostBackButton" runat="server" 
    2121                Text="PostBack" 
     
    4747                            <ItemStyle CssClass="list-row-check" /> 
    4848                        </sff:RowStyleField> 
     49                        <sff:RowStyleField 
     50                            DataField="is_one" 
     51                            MergeCssClass="True"> 
     52                            <ItemStyle CssClass="list-row-check2" /> 
     53                        </sff:RowStyleField> 
    4954                        <sff:BoundField 
    5055                            HeaderText="name" 
  • framework/trunk/WebApplication/UI/WebControls/RowStyleFieldPage.aspx.designer.cs

    r823 r1640  
    11//------------------------------------------------------------------------------ 
    2 // <auto-generated> 
     2// <自動生成> 
    33//     このコードはツールによって生成されました。 
    4 //     ランタイム バージョン:2.0.50727.4963 
    54// 
    65//     このファイルへの変更は、以下の状況下で不正な動作の原因になったり、 
    7 //     コードが再生成されるときに損失したりします。 
    8 // </auto-generated> 
     6//     コードが再生成されるときに損失したりします。  
     7// </自動生成> 
    98//------------------------------------------------------------------------------ 
    109 
     
    1918        /// <remarks> 
    2019        /// 自動生成されたフィールド。 
    21         /// 変更するには、フィールドの宣言をデザイナ ファイルから分離コード ファイルに移動します。 
     20        /// 変更するには、フィールドの宣言をデザイナ ファイルから分離コード ファイルに移動します。 
    2221        /// </remarks> 
    2322        protected global::System.Web.UI.HtmlControls.HtmlForm MainForm; 
     
    2827        /// <remarks> 
    2928        /// 自動生成されたフィールド。 
    30         /// 変更するには、フィールドの宣言をデザイナ ファイルから分離コード ファイルに移動します。 
     29        /// 変更するには、フィールドの宣言をデザイナ ファイルから分離コード ファイルに移動します。 
    3130        /// </remarks> 
    3231        protected global::System.Web.UI.WebControls.Button PostBackButton; 
     
    3736        /// <remarks> 
    3837        /// 自動生成されたフィールド。 
    39         /// 変更するには、フィールドの宣言をデザイナ ファイルから分離コード ファイルに移動します。 
     38        /// 変更するには、フィールドの宣言をデザイナ ファイルから分離コード ファイルに移動します。 
    4039        /// </remarks> 
    4140        protected global::FCSoft.SilverFrost.Framework.Web.UI.WebControls.CommonDbDataSource CommonDbDataSource101; 
     
    4645        /// <remarks> 
    4746        /// 自動生成されたフィールド。 
    48         /// 変更するには、フィールドの宣言をデザイナ ファイルから分離コード ファイルに移動します。 
     47        /// 変更するには、フィールドの宣言をデザイナ ファイルから分離コード ファイルに移動します。 
    4948        /// </remarks> 
    5049        protected global::FCSoft.SilverFrost.Framework.Web.UI.WebControls.GridView CommonDbDataSource101GridView; 
  • framework/trunk/WebLibrary/Sources/Reflections.cs

    r1639 r1640  
    11351135 
    11361136        /// <summary> 
     1137        /// <see cref="System.Web.UI.WebControls.Style"/> に関係するリフレクションの集合です。 
     1138        /// </summary> 
     1139        internal static class Style 
     1140        { 
     1141            /// <summary> 
     1142            /// <c>Style.SetRegisteredCssClass</c> メソッドを呼び出すデリゲートです。 
     1143            /// </summary> 
     1144            private static readonly Action<System.Web.UI.WebControls.Style, string> SetRegisteredCssClassDelegate; 
     1145 
     1146 
     1147            /// <summary> 
     1148            /// クラスを初期化します。 
     1149            /// </summary> 
     1150            static Style() 
     1151            { 
     1152                MethodInfo setRegisteredCssClass 
     1153                    = typeof(System.Web.UI.WebControls.Style).GetMethod( 
     1154                        "SetRegisteredCssClass", 
     1155                        BindingFlags.Instance | BindingFlags.NonPublic, 
     1156                        null, 
     1157                        new[] { typeof(string) }, 
     1158                        null); 
     1159                if (setRegisteredCssClass != null) 
     1160                { 
     1161                    SetRegisteredCssClassDelegate = delegate(System.Web.UI.WebControls.Style style, string cssClass) 
     1162                    { 
     1163                        setRegisteredCssClass.Invoke(style, new object[] { cssClass }); 
     1164                    }; 
     1165                } 
     1166            } 
     1167 
     1168 
     1169            /// <summary> 
     1170            /// 使用出来るかどうかを返します。 
     1171            /// </summary> 
     1172            /// <value> 
     1173            /// 使用出来る場合は <see langword="true"/>。 
     1174            /// それ以外の場合は <see langword="false"/>。 
     1175            /// </value> 
     1176            internal static bool IsValid 
     1177            { 
     1178                get 
     1179                { 
     1180                    return SetRegisteredCssClassDelegate != null; 
     1181                } 
     1182            } 
     1183 
     1184 
     1185            /// <summary> 
     1186            /// <c>Style.SetRegisteredCssClass</c> メソッドを呼び出します。 
     1187            /// </summary> 
     1188            /// <param name="style">スタイル。</param> 
     1189            /// <param name="cssClass">CSS クラス。</param> 
     1190            internal static void SetRegisteredCssClass( 
     1191                System.Web.UI.WebControls.Style style, 
     1192                string cssClass) 
     1193            { 
     1194                if (SetRegisteredCssClassDelegate == null) 
     1195                { 
     1196                    return; 
     1197                } 
     1198 
     1199                SetRegisteredCssClassDelegate(style, cssClass); 
     1200            } 
     1201        } 
     1202 
     1203 
     1204        /// <summary> 
    11371205        /// <see cref="System.Web.UI.WebControls.ListControl"/> に関係するリフレクションの集合です。 
    11381206        /// </summary> 
  • framework/trunk/WebLibrary/Sources/UI/WebControls/RowStyleField.cs

    r864 r1640  
    4444        private const string DataFieldKey = "DataField"; 
    4545 
     46        /// <summary> 
     47        /// <see cref="MergeCssClass"/> プロパティ用のキー。 
     48        /// </summary> 
     49        private const string MergeCssClassKey = "MergeCssClass"; 
     50 
    4651 
    4752        /// <summary> 
     
    9297        } 
    9398 
     99        /// <summary> 
     100        /// <see cref="DataControlField.ItemStyle"/> に設定された 
     101        /// <see cref="Style.CssClass"/> をマージするかどうかを取得または設定します。 
     102        /// </summary> 
     103        /// <value> 
     104        /// <see cref="DataControlField.ItemStyle"/> に設定された 
     105        /// <see cref="Style.CssClass"/> をマージする場合は <see langword="true"/>。 
     106        /// それ以外の場合は <see langword="false"/>。 
     107        /// 既定値は <see langword="false"/> です。 
     108        /// </value> 
     109        [Themeable(false)] 
     110        [DefaultValue("")] 
     111        [WebCategory("Appearance")] 
     112        [WebDescription("Description_MergeCssClass")] 
     113        public virtual bool MergeCssClass 
     114        { 
     115            get 
     116            { 
     117                return (bool)(ViewState[MergeCssClassKey] ?? false); 
     118            } 
     119 
     120            set 
     121            { 
     122                ViewState[MergeCssClassKey] = value; 
     123            } 
     124        } 
     125 
    94126        #region プロパティの隠蔽 
    95127        // ReSharper disable UnusedMember.Local 
     
    378410        /// イベント データを格納している <see cref="EventArgs"/>。 
    379411        /// </param> 
     412        /// <exception cref="HttpException"> 
     413        /// controlContainer が <see langword="null"/> 参照か、 
     414        /// コンテナのデータアイテムが <see langword="null"/> 参照か、 
     415        /// コンテナに <see cref="DataField"/> で指定したフィールドが見つかりません。 
     416        /// </exception> 
    380417        protected virtual void OnDataBindField(object sender, EventArgs e) 
    381418        { 
     
    418455            } 
    419456 
     457            // 親が GridView の場合で CssClass をマージする場合、GridView の RowStyle/AlternatingRowStyle から CssClass を取得しマージ 
     458            string newCssClass = null; 
     459            if (MergeCssClass) 
     460            { 
     461                string cssClass = ItemStyle.CssClass; 
     462                if (!string.IsNullOrWhiteSpace(cssClass)) 
     463                { 
     464                    GridViewRow gridViewRow = parent as GridViewRow; 
     465                    if (gridViewRow != null) 
     466                    { 
     467                        System.Web.UI.WebControls.GridView gridView 
     468                            = parent.Parent.Parent as System.Web.UI.WebControls.GridView; 
     469 
     470                        string parentCssClass = null; 
     471                        if (gridViewRow.RowIndex % 2 != 0) 
     472                        { 
     473                            parentCssClass = gridView.AlternatingRowStyle.CssClass; 
     474                        } 
     475 
     476                        if (string.IsNullOrEmpty(parentCssClass)) 
     477                        { 
     478                            parentCssClass = gridView.RowStyle.CssClass; 
     479                        } 
     480 
     481                        newCssClass 
     482                            = !string.IsNullOrWhiteSpace(parentCssClass) 
     483                                ? parentCssClass + " " + cssClass 
     484                                : null; 
     485                    } 
     486                } 
     487            } 
     488 
    420489            parent.MergeStyle(ItemStyle); 
    421         } 
    422  
    423         /// <summary> 
    424         /// バインドされているフィールドの値を取得します。  
     490 
     491            if (newCssClass != null) 
     492            { 
     493                parent.CssClass = newCssClass; 
     494            } 
     495        } 
     496 
     497        /// <summary> 
     498        /// バインドされているフィールドの値を取得します。 
    425499        /// </summary> 
    426500        /// <param name="controlContainer"> 
  • framework/trunk/WebTest/Sources/ReflectionsTest.cs

    r1639 r1640  
    389389 
    390390        /// <summary> 
     391        /// <see cref="Reflections.Style"/> が使用出来るかのテストです。 
     392        /// </summary> 
     393        [Test] 
     394        public void TestStyleIsValid() 
     395        { 
     396            Assert.That(Reflections.Style.IsValid, Is.True); 
     397        } 
     398 
     399        /// <summary> 
     400        /// <see cref="Reflections.Style"/> の <c>SetRegisteredCssClass</c> メソッドを呼び出すテストです。 
     401        /// </summary> 
     402        [Test] 
     403        public void TestStyleSetRegisteredCssClass() 
     404        { 
     405            System.Web.UI.WebControls.Style style 
     406                = new System.Web.UI.WebControls.Style(); 
     407 
     408            Reflections.Style.SetRegisteredCssClass(style, "class1"); 
     409 
     410            System.Web.UI.WebControls.Style targetStyle 
     411                = new System.Web.UI.WebControls.Style 
     412                { 
     413                    CssClass = "target-class" 
     414                }; 
     415 
     416            targetStyle.MergeWith(style); 
     417 
     418            Assert.That(targetStyle.CssClass, Is.EqualTo("target-class class1")); 
     419        } 
     420 
     421 
     422        /// <summary> 
    391423        /// <see cref="Reflections.ListControl"/> が使用出来るかのテストです。 
    392424        /// </summary> 
詳しい使い方は TracChangeset を参照してください。