.NET TIPS

DataGridコントロールでソートを禁止するには?

デジタルアドバンテージ
2004/01/23

 DataGridコントロールでは、デフォルトの機能として、列のタイトル部分をクリックして行をソート(並べ替え)することができる。

デフォルトのDataGridコントロール
DataGridコントロールでは、列のタイトル部分をクリックして行をソート(昇順、降順の並び替え)できる。

 しかし、実際のDataGridコントロールの利用では、このDataGridコントロールのソート機能を禁止したい場合があるだろう。そのような場合、このソート機能を実行しないようにDataGridコントロールを設定できる。

ソート機能を禁止したDataGridコントロール
DataGridコントロールは、ソートを実行しないようにすることもできる。

 これを行うには、まずDataGridTableStyleクラス(System.Windows.Forms名前空間)のオブジェクトのAllowSortingプロパティ(ソート実行許可の属性)にfalseを指定する(このプロパティはデフォルトではtrueになっている)。次に、このオブジェクトを、DataGridコントロールのテーブル・スタイルのコレクションであるTableStylesプロパティにAddメソッドにより追加し、DataGridコントロールにテーブル・スタイルを適用する。

 このプロパティ設定を行うサンプルのコードを次に示す。

private void Form1_Load(object sender, System.EventArgs e)
{
  // テーブルの列を作成
  DataSet dataSet1 = new DataSet("商品マスター");
  DataTable dataTable1  = dataSet1.Tables.Add("商品テーブル");
  DataColumn dataClumn1 = dataTable1.Columns.Add("ID", typeof(int));
  DataColumn dataClumn2 = dataTable1.Columns.Add("商品");
  DataColumn dataClumn3 = dataTable1.Columns.Add("個数", typeof(int));
  // テーブルのスタイルを作成
  DataGridTableStyle dgTableStyle = new DataGridTableStyle();
  dgTableStyle.MappingName = dataTable1.TableName;
  // *** 列ヘッダーによるソートを禁止 ***
  dgTableStyle.AllowSorting = false;
  dataGrid1.TableStyles.Add(dgTableStyle);

  // テーブルの列のスタイルを作成
  DataGridTextBoxColumn dgColumnStyle1 = new DataGridTextBoxColumn();
  DataGridTextBoxColumn dgColumnStyle2 = new DataGridTextBoxColumn();
  DataGridTextBoxColumn dgColumnStyle3 = new DataGridTextBoxColumn();
  dgColumnStyle1.MappingName = dataClumn1.ColumnName;
  dgColumnStyle2.MappingName = dataClumn2.ColumnName;
  dgColumnStyle3.MappingName = dataClumn3.ColumnName;
  // ヘッダーにタイトルを設定
  dgColumnStyle1.HeaderText = dataClumn1.ColumnName;
  dgColumnStyle2.HeaderText = dataClumn2.ColumnName;
  dgColumnStyle3.HeaderText = dataClumn3.ColumnName;
  // 列のスタイルをテーブル・スタイルに登録
  dgTableStyle.GridColumnStyles.Add(dgColumnStyle1);
  dgTableStyle.GridColumnStyles.Add(dgColumnStyle2);
  dgTableStyle.GridColumnStyles.Add(dgColumnStyle3);

  // テーブルにデータを追加
  dataTable1.Rows.Add(new Object[] {1, "みかん", 100});
  dataTable1.Rows.Add(new Object[] {2, "りんご", 300});
  dataTable1.Rows.Add(new Object[] {3, "バナナ", 120});
  dataTable1.Rows.Add(new Object[] {4, "すいか", 280});
  dataTable1.Rows.Add(new Object[] {5, "いちご", 200});
  dataTable1.Rows.Add(new Object[] {6, "メロン", 150});

  dataGrid1.SetDataBinding(dataSet1, dataTable1.TableName);
}
DataGridコントロールでソート機能を禁止するプログラム
サンプル・プログラム(C#:dgallowsort.cs、VB.NET:dgallowsort.vb)のダウンロード

 なお、DataGridコントロールにテーブル・スタイルを設定していない場合(つまり、DataGridTableStyleクラスのオブジェクトをテーブル・スタイルとしてDataGridコントロールに追加していない場合)、DataGridコントロールのAllowSortingプロパティをfalseに設定すれば、同じようにDataGridコントロールのソート機能を禁止できる。End of Article

カテゴリ:Windowsフォーム 処理対象:DataGridコントロール
使用ライブラリ:DataGridコントロール
使用ライブラリ:DataGridTableStyleクラス(System.Windows.Forms名前空間)
 
この記事と関連性の高い別の.NET TIPS
DataGridコントロールで行の追加/削除およびデータ編集を禁止するには?
DataGridコントロールの入力項目でチェック・ボックスを使用するには?
[ASP.NET]DataGridコントロールにソート機能を追加するには?
DataGridコントロールで列の幅を指定するには?
[ASP.NET]DataGridコントロールの編集用テキストボックスを大きくするには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間