SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Silverlight/WPFで使える逆引きTips集

Silverlight/WPFで使える逆引きTips集
――DataGrid機能(Silverlight後編)

(19) DataGridコントロール Silverlight後編

02.項目をグループ化する

 DataGridの任意の項目をグループ化するには PagedCollectionViewクラスを使用します。

 コンストラクタの引数にはドメインデータソースを渡します。その後、GroupDescriptionsプロパティのAddメソッドでグループ化する項目を追加し、DataGridのデータソースに、PagedCollectionViewのインスタンスを設定します。

 下記は項目をグループ化する例です。Title列をグループ化し、同じ値ごとにグルーピングして表示します。

項目をグループ化する例
項目をグループ化する例
VBの例
'★★★PagedCollectionView変数の宣言★★★
Dim globalPVC As PagedCollectionView

' ページロード時の処理
Private Sub Page_Loaded(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles MyBase.Loaded
    'ドメインデータソースをPagedCollectionViewに追加
    globalPVC = New PagedCollectionView(CustomerDomainDataSource.Data)

    '★★★Title列をグループ化する★★★
    globalPVC.GroupDescriptions.Add(New PropertyGroupDescription("Title"))

    'DataGridのデータソースにPagedCollectionViewを設定
    CustomerDataGrid.ItemsSource = globalPVC
End Sub
C#の例
 // ★★★PagedCollectionView変数の宣言★★★
PagedCollectionView globalPVC;

// ページロード時の処理
private void Page_Loaded(object sender, RoutedEventArgs e)
{
    globalPVC = new PagedCollectionView(customerDomainDataSource.Data);

    // ★★★Title列をグループ化する★★★
    globalPVC.GroupDescriptions.Add(new PropertyGroupDescription("Title"));

    // DataGridのデータソースにPagedCollectionViewを設定
    customerDataGrid.ItemsSource = globalPVC;
}
ポイント

 項目をグループ化するにはPagedCollectionViewクラスを使用する。

03.データを並び替えを禁止する

 既定では、DataGridのヘッダーをクリックすることでデータの並べ替えを行うことが可能になっています。データの並べ替えを禁止したい場合は、CanUserSortColumnsプロパティにFalseを設定します。

 下記は、データの並べ替えを禁止する例です。チェックボックス[並べ替えを許可]のチェック状態に合わせて、並べ替えの有効/無効を切り替えます。

データの並び替えを禁止する例
データの並び替えを禁止する例
XAMLの例
<CheckBox Content="並べ替えを許可" Name="chkCanUserSortColumns" 
                  Checked="chkCanUserSortColumns_Checked" 
                  Unchecked="chkCanUserSortColumns_Unchecked" />
<sdk:DataGrid CanUserSortColumns="False">
 :省略
</sdk:DataGrid>
VBの例
' [並べ替えを許可]チェック時の処理
Private Sub chkCanUserSortColumns_Checked(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles chkCanUserSortColumns.Checked
    '★★★並べ替えを有効にする★★★
    CustomerDataGrid.CanUserSortColumns = True
End Sub

' [並べ替えを許可]チェックオフ時の処理
Private Sub chkCanUserSortColumns_Unchecked(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles chkCanUserSortColumns.Unchecked
    '★★★並べ替えを無効にする★★★
    CustomerDataGrid.CanUserSortColumns = False
End Sub
C#の例
// [並べ替えを許可]チェック時の処理
private void chkCanUserSortColumns_Checked(object sender, RoutedEventArgs e)
{
    // ★★★並べ替えを有効にする★★★
    customerDataGrid.CanUserSortColumns = true;
}

// [並べ替えを許可]チェックオフ時の処理
private void chkCanUserSortColumns_Unchecked(object sender, RoutedEventArgs e)
{
    // ★★★並べ替えを無効にする★★★
    customerDataGrid.CanUserSortColumns = false;
}
ポイント

 データの並べ替えを禁止するにはCanUserSortColumnsプロパティにFalseを設定する。 

次のページ
04.並べ替え可能な列を限定する

この記事は参考になりましたか?

Silverlight/WPFで使える逆引きTips集連載記事一覧

もっと読む

この記事の著者

HIRO(ヒロ)

HIRO's.NETのHIROです。とある半導体工場のSEです。VB.NET, C#, PowerShellによるプログラミングを楽しんでいます。最近はBlog でPowerShellについて書いています。2008/07/07にPowerShell from Japan!!というサイトを立ち上げまし...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/6016 2011/07/07 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー