DataGridの行と列の入れ替え

「datagridviewの行と列の機能の逆転」(1) Insider.NET − @IT



たとえば時系列のデータなどは、本来行として表示されるデータを列として右方向に展開するかたちでDataGridに表示させる場合が多いようです。このような要望を実現する場合、行と列を反転(逆転)させること(行列の転置機能)になります。このような機能を有しているグレープシティ製品としては、ComponentOne Studioという製品に収録されているTrue DBGridが該当します。

404 NOT FOUND | グレープシティ株式会社 - Corporate Portal Home



この機能の使用方法は、True DBGrid(コントロール名:C1TrueDBGrid)のスマートタグにある[データレイアウト]を「Inverted」に設定するだけですので、とっても簡単です。プロパティとしてはC1TrueDBGrid.DataViewプロパティになります。








この場合列や行へのアクセスも反転されますので、RowsプロパティとColumnsプロパティで見た目通りの行と列を操作できます。
なお、製品に含まれる「Views」というサンプルプロジェクトでもこの機能を確認できます。


また、製品の機能ではありませんが、製品のサンプルとしてコーディングによって行と列を入れ替える方法を紹介しているものとしては、FlexGridという製品が該当します。サンプルの名称は「Transpose」になります。


追記:2010/02/05
WPF製品としては、同じくComponentOne Studioに収録されているGrid for WPF(C1DataGridクラスC1.WPF.C1DataGrid名前空間)が該当します。


Grid for WPFの場合専用のプロパティが用意されているのではなく、あらかじめアセンブリの中に定義してある「TabularHorizontalViewStyle」というXAMLリソースをC1DataGridのStyleプロパティに設定する方法となります。


XAML

<Window x:Class="Window1"
   xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
   xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
   xmlns:c1grid="http://schemas.componentone.com/wpf/C1DataGrid"
   Title="C1DataGrid TabularHorizontalViewSample" Height="560" Width="560">
    <Grid>
        <c1grid:C1DataGrid ItemsSource="{Binding}"
           Style="{StaticResource {ComponentResourceKey ResourceId=TabularHorizontalViewStyle,
           TypeInTargetAssembly={x:Type c1grid:C1DataGrid}}}"
           FilterBarVisibility="Collapsed" NewRowPlacement="None" GroupByVisibility="Collapsed"/>
    </Grid>
</Window>





この機能はWebで公開されているXBAPデモの「DataGrid > テーマとビュー > データビュー:右向きテーブル」でも確認することができます。

WPF Control Explorer デモ