チェンジセット 1602 (default)


以下の違いを無視:
日時:
2023/09/07 0:18:17 (13ヵ月前)
更新者:
hizuya@…
ログメッセージ:
  • GridView に、生成するテーブルが THEAD/TFOOT を使うようにするための UseTableSection プロパティを追加。
  • GridView に標準で ShowHeaderWhenEmpty が追加されたため、MustShowHeader プロパティを Obsolete に変更。
場所:
framework/trunk
ファイル:
4個の更新

凡例:

未変更
追加
削除
  • framework/trunk/WebApplication/UI/WebControls/GridViewPage.aspx

    r683 r1602  
    1717 
    1818            <h1>UnitTestWeb/UI/WebControls/GridViewPage.aspx</h1> 
    19              
     19 
    2020            <asp:CheckBox ID="AutoUpdateParameterCheckBox" runat="server" 
    2121                Text="パラメータの自動更新" 
     
    2424                Text="自動データバインド" 
    2525                Checked="true" /> 
     26            <asp:CheckBox ID="ShowFooterCheckBox" runat="server" 
     27                Text="フッターの表示" /> 
     28            <asp:CheckBox ID="UseTableSectionCheckBox" runat="server" 
     29                Text="テーブルセクションの使用" /> 
    2630            <asp:Button ID="PostBackButton" runat="server" 
    2731                Text="PostBack" /> 
  • framework/trunk/WebApplication/UI/WebControls/GridViewPage.aspx.cs

    r864 r1602  
    6969            CommonDbDataSource101.AutoUpdateParameter = AutoUpdateParameterCheckBox.Checked; 
    7070            CommonDbDataSource101GridView.AutoDataBind = AutoDataBindCheckBox.Checked; 
     71            CommonDbDataSource101GridView.ShowFooter = ShowFooterCheckBox.Checked; 
     72            CommonDbDataSource101GridView.UseTableSection = UseTableSectionCheckBox.Checked; 
    7173        } 
    7274 
  • framework/trunk/WebApplication/UI/WebControls/GridViewPage.aspx.designer.cs

    r683 r1602  
    11//------------------------------------------------------------------------------ 
    2 // <auto-generated> 
     2// <自動生成> 
    33//     このコードはツールによって生成されました。 
    4 //     ランタイム バージョン:2.0.50727.4952 
    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.CheckBox AutoUpdateParameterCheckBox; 
     
    3736        /// <remarks> 
    3837        /// 自動生成されたフィールド。 
    39         /// 変更するには、フィールドの宣言をデザイナ ファイルから分離コード ファイルに移動します。 
     38        /// 変更するには、フィールドの宣言をデザイナ ファイルから分離コード ファイルに移動します。 
    4039        /// </remarks> 
    4140        protected global::System.Web.UI.WebControls.CheckBox AutoDataBindCheckBox; 
     41         
     42        /// <summary> 
     43        /// ShowFooterCheckBox コントロール。 
     44        /// </summary> 
     45        /// <remarks> 
     46        /// 自動生成されたフィールド。 
     47        /// 変更するには、フィールドの宣言をデザイナー ファイルから分離コード ファイルに移動します。 
     48        /// </remarks> 
     49        protected global::System.Web.UI.WebControls.CheckBox ShowFooterCheckBox; 
     50         
     51        /// <summary> 
     52        /// UseTableSectionCheckBox コントロール。 
     53        /// </summary> 
     54        /// <remarks> 
     55        /// 自動生成されたフィールド。 
     56        /// 変更するには、フィールドの宣言をデザイナー ファイルから分離コード ファイルに移動します。 
     57        /// </remarks> 
     58        protected global::System.Web.UI.WebControls.CheckBox UseTableSectionCheckBox; 
    4259         
    4360        /// <summary> 
     
    4663        /// <remarks> 
    4764        /// 自動生成されたフィールド。 
    48         /// 変更するには、フィールドの宣言をデザイナ ファイルから分離コード ファイルに移動します。 
     65        /// 変更するには、フィールドの宣言をデザイナ ファイルから分離コード ファイルに移動します。 
    4966        /// </remarks> 
    5067        protected global::System.Web.UI.WebControls.Button PostBackButton; 
     
    5572        /// <remarks> 
    5673        /// 自動生成されたフィールド。 
    57         /// 変更するには、フィールドの宣言をデザイナ ファイルから分離コード ファイルに移動します。 
     74        /// 変更するには、フィールドの宣言をデザイナ ファイルから分離コード ファイルに移動します。 
    5875        /// </remarks> 
    5976        protected global::System.Web.UI.WebControls.TextBox CommonDbDataSource101TextBox; 
     
    6481        /// <remarks> 
    6582        /// 自動生成されたフィールド。 
    66         /// 変更するには、フィールドの宣言をデザイナ ファイルから分離コード ファイルに移動します。 
     83        /// 変更するには、フィールドの宣言をデザイナ ファイルから分離コード ファイルに移動します。 
    6784        /// </remarks> 
    6885        protected global::System.Web.UI.WebControls.Button DataBindButton101; 
     
    7390        /// <remarks> 
    7491        /// 自動生成されたフィールド。 
    75         /// 変更するには、フィールドの宣言をデザイナ ファイルから分離コード ファイルに移動します。 
     92        /// 変更するには、フィールドの宣言をデザイナ ファイルから分離コード ファイルに移動します。 
    7693        /// </remarks> 
    7794        protected global::System.Web.UI.WebControls.Button DataBindButton102; 
     
    8299        /// <remarks> 
    83100        /// 自動生成されたフィールド。 
    84         /// 変更するには、フィールドの宣言をデザイナ ファイルから分離コード ファイルに移動します。 
     101        /// 変更するには、フィールドの宣言をデザイナ ファイルから分離コード ファイルに移動します。 
    85102        /// </remarks> 
    86103        protected global::FCSoft.SilverFrost.Framework.Web.UI.WebControls.CommonDbDataSource CommonDbDataSource101; 
     
    91108        /// <remarks> 
    92109        /// 自動生成されたフィールド。 
    93         /// 変更するには、フィールドの宣言をデザイナ ファイルから分離コード ファイルに移動します。 
     110        /// 変更するには、フィールドの宣言をデザイナ ファイルから分離コード ファイルに移動します。 
    94111        /// </remarks> 
    95112        protected global::FCSoft.SilverFrost.Framework.Web.UI.WebControls.GridView CommonDbDataSource101GridView; 
  • framework/trunk/WebLibrary/Sources/UI/WebControls/GridView.cs

    r900 r1602  
    2828    using System.ComponentModel; 
    2929    using System.Reflection; 
     30    using System.Web; 
    3031    using System.Web.UI; 
    3132    using System.Web.UI.WebControls; 
     
    4647        private const string DataRowCountKey = "DataRowCount"; 
    4748 
     49#pragma warning disable 618 
    4850        /// <summary> 
    4951        /// <see cref="MustShowHeader"/> プロパティ用のキー。 
    5052        /// </summary> 
    5153        private const string MustShowHeaderKey = "MustShowHeader"; 
     54#pragma warning restore 618 
    5255 
    5356        /// <summary> 
     
    5558        /// </summary> 
    5659        private const string AutoDataBindKey = "AutoDataBind"; 
     60 
     61        /// <summary> 
     62        /// <see cref="UseTableSection"/> プロパティ用のキー。 
     63        /// </summary> 
     64        private const string UseTableSectionKey = "UseTableSection"; 
    5765 
    5866 
     
    7886                BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.DeclaredOnly, 
    7987                typeof(GridViewRow), 
    80                 new Type[] 
     88                new[] 
    8189                { 
    8290                    typeof(int), 
     
    110118        /// 最後に作成したフィールドのコレクション。 
    111119        /// </summary> 
     120        /// <remarks> 
     121        /// <see cref="CreateChildControls"/> の実行中のみ使用されます。 
     122        /// </remarks> 
    112123        private ICollection fields; 
     124 
     125        /// <summary> 
     126        /// ヘッダー行を作成可能な位置かどうか。 
     127        /// </summary> 
     128        /// <remarks> 
     129        /// <see cref="CreateChildControls"/> の実行中のみ使用されます。 
     130        /// </remarks> 
     131        private bool canCreateHeaderRow; 
    113132 
    114133 
     
    277296        [WebCategory("Appearance")] 
    278297        [WebDescription("Description_GridView_MustShowHeader")] 
     298        [Obsolete("User `ShowHeaderWhenEmpty'")] 
    279299        public virtual bool MustShowHeader 
    280300        { 
     
    322342 
    323343        /// <summary> 
     344        /// <see cref="BaseDataBoundControl.DataSourceID"/> 
     345        /// が設定されている場合などで、自動的にデータバインドされるケースで、 
     346        /// 自動でデータバインドを行うかどうかを設定または取得します。 
     347        /// </summary> 
     348        /// <value> 
     349        /// 自動でデータバインドする場合は <see langword="true"/>。 
     350        /// それ以外の場合は <see langword="false"/>。 
     351        /// 既定値は <see langword="false"/> です。 
     352        /// </value> 
     353        /// <remarks> 
     354        /// このプロパティの設定にかかわらず、 
     355        /// ページインデックスが変更された場合はデータバインドを試みます。 
     356        /// </remarks> 
     357        [Themeable(false)] 
     358        [DefaultValue(false)] 
     359        [WebCategory("Layout")] 
     360        [WebDescription("Description_GridView_UseTableSection")] 
     361        public virtual bool UseTableSection 
     362        { 
     363            get 
     364            { 
     365                return (bool)(ViewState[UseTableSectionKey] ?? false); 
     366            } 
     367 
     368            set 
     369            { 
     370                ViewState[UseTableSectionKey] = value; 
     371            } 
     372        } 
     373 
     374        /// <summary> 
    324375        /// テーブルを取得または設定します。 
    325376        /// </summary> 
     
    328379        /// 存在しない場合は <see langword="null"/> 参照。 
    329380        /// </value> 
     381        /// <exception cref="HttpException"> 
     382        /// コントロールの一覧が読み取り専用の場合にスローされます。 
     383        /// </exception> 
    330384        protected virtual Table Table 
    331385        { 
     
    349403 
    350404                Table table = Controls[0] as Table; 
     405                // ReSharper disable once ConditionIsAlwaysTrueOrFalse 
    351406                if (table == null && Controls[0] != null) 
    352407                { 
     
    520575        /// 作成される行数。 
    521576        /// </returns> 
     577        /// <exception cref="HttpException"> 
     578        /// <paramref name="dataSource" /> が <see langword="null"/> を返します。 
     579        /// または <paramref name="dataSource" /> が <see cref="ICollection" /> 
     580        /// インターフェイスを実装していないため、<see cref="DataSourceSelectArguments.TotalRowCount" /> 
     581        /// を返すことができません。 
     582        /// または <see cref="P:System.Web.UI.WebControls.GridView.AllowPaging" /> は 
     583        /// <see langword="true"/> ですが、<paramref name="dataSource" /> は 
     584        /// <see cref="ICollection" /> インターフェイスを実装していないため、データ ソース ページングを実行できません。 
     585        /// または <paramref name="dataSource" /> が <see cref="ICollection" /> インターフェイスを実装せず、 
     586        /// <paramref name="dataBinding" /> が <see langword="false"/> に設定されています。 
     587        /// </exception> 
    522588        protected override int CreateChildControls( 
    523589            IEnumerable dataSource, 
     
    529595            try 
    530596            { 
     597                canCreateHeaderRow = true; 
     598 
    531599                // 親を呼び出す 
    532600                int count = base.CreateChildControls(dataSource, dataBinding); 
     
    537605                } 
    538606 
     607#pragma warning disable 618 
    539608                // ヘッダー行を作成 
    540609                if (MustShowHeader && ShowHeader && fields != null) 
     
    542611                    EnsureHeaderRow(dataBinding); 
    543612                } 
     613#pragma warning restore 618 
    544614 
    545615                return count; 
     
    550620                fields = null; 
    551621            } 
     622        } 
     623 
     624        /// <summary> 
     625        /// <see cref="GridView" /> コントロールの行を作成します。 
     626        /// </summary> 
     627        /// <param name="rowIndex">作成する行のインデックス。</param> 
     628        /// <param name="dataSourceIndex">行にバインドするデータ ソース項目のインデックス。</param> 
     629        /// <param name="rowType"><see cref="DataControlRowType" /> 値のいずれか。</param> 
     630        /// <param name="rowState"><see cref="DataControlRowState" /> 値のいずれか。</param> 
     631        /// <returns> 
     632        /// 指定したパラメーターを使用して作成された <see cref="GridViewRow" />。 
     633        /// </returns> 
     634        protected override GridViewRow CreateRow(int rowIndex, int dataSourceIndex, DataControlRowType rowType, DataControlRowState rowState) 
     635        { 
     636            GridViewRow gridViewRow = base.CreateRow(rowIndex, dataSourceIndex, rowType, rowState); 
     637 
     638            if (UseTableSection) 
     639            { 
     640                switch (gridViewRow.RowType) 
     641                { 
     642                    case DataControlRowType.Header: 
     643                        if (canCreateHeaderRow) 
     644                        { 
     645                            gridViewRow.TableSection = TableRowSection.TableHeader; 
     646                        } 
     647 
     648                        break; 
     649 
     650                    case DataControlRowType.Footer: 
     651                        canCreateHeaderRow = false; 
     652                        gridViewRow.TableSection = TableRowSection.TableFooter; 
     653                        break; 
     654 
     655                    case DataControlRowType.Pager: 
     656 
     657                        // ページャーはヘッダーとフッターのどちらにも出現する (両方同時にもあり得る) 
     658                        gridViewRow.TableSection = canCreateHeaderRow ? TableRowSection.TableHeader : TableRowSection.TableFooter; 
     659                        break; 
     660 
     661                    default: 
     662                        canCreateHeaderRow = false; 
     663                        break; 
     664                } 
     665            } 
     666 
     667            return gridViewRow; 
    552668        } 
    553669 
     
    576692        /// </summary> 
    577693        /// <param name="e"> 
    578         /// イベント データを格納している <see cref="EventArgs"/>。  
     694        /// イベント データを格納している <see cref="EventArgs"/>。 
    579695        /// </param> 
    580696        protected override void OnPageIndexChanged(EventArgs e) 
     
    688804                return (GridViewRow)CreateRowMethodInfo.Invoke( 
    689805                    this, 
    690                     new object[] 
     806                    new[] 
    691807                    { 
    692808                        rowIndex, 
詳しい使い方は TracChangeset を参照してください。