注意:ここで紹介しているDataGridは、System.Windows.Forms名前空間のDataGrid(Windowsフォーム)です。System.Web.UI.WebControls名前空間のDataGrid(Webフォーム)ではありません。
DataGridに表示されている列を削除するには、GridColumnStylesCollection.RemoveメソッドかRemoveAtメソッドを使います。この時、列スタイルが設定されている必要があります。なお、列スタイルの設定方法はこちらをご覧ください。
ここではDataGrid1(DataGridオブジェクト)にDataTable1(DataTableオブジェクト、TableName="DataTable1")が連結されているものとし、列"Column1"を削除します。
'GridColumnStylesCollection.RemoveAtメソッドで列を削除する Dim gcsc As GridColumnStylesCollection gcsc = DataGrid1.TableStyles("DataTable1").GridColumnStyles '"Column1"を削除する '"Column1"がGridColumnStylesCollection内にあるか調べる If gcsc.Contains("Column1") Then '"Column1"のインデックスの取得 '"Column1"がGridColumnStylesCollection内にない時は-1を返す Dim i As Integer i = gcsc.IndexOf(gcsc("Column1")) 'インデックス番号で削除する gcsc.RemoveAt(i) End If
//GridColumnStylesCollection.RemoveAtメソッドで列を削除する GridColumnStylesCollection gcsc; gcsc = DataGrid1.TableStyles["DataTable1"].GridColumnStyles; //"Column1"を削除する //"Column1"がGridColumnStylesCollection内にあるか調べる if (gcsc.Contains("Column1")) { //"Column1"のインデックスの取得 //"Column1"がGridColumnStylesCollection内にない時は-1を返す int i; i = gcsc.IndexOf(gcsc["Column1"]); //インデックス番号で削除する gcsc.RemoveAt(i); }
次にRemoveメソッドの使用法です。
'GridColumnStylesCollection.Removeメソッドで列を削除する Dim gcsc As GridColumnStylesCollection gcsc = DataGrid1.TableStyles("DataTable1").GridColumnStyles '"Column1"を削除する '"Column1"がGridColumnStylesCollection内にあるか調べる If gcsc.Contains("Column1") Then '削除する gcsc.Remove(gcsc("Column1")) End If
//GridColumnStylesCollection.Removeメソッドで列を削除する GridColumnStylesCollection gcsc; gcsc = DataGrid1.TableStyles["DataTable1"].GridColumnStyles; //"Column1"を削除する //"Column1"がGridColumnStylesCollection内にあるか調べる if (gcsc.Contains("Column1")) { //削除する gcsc.Remove(gcsc["Column1"]); }
次に列を非表示にする方法を考えてみます。
一番手っ取り早い方法は列の幅を0にすることです。列の幅を変更する方法はこちらをご覧ください。
またDataColumnオブジェクトのColumnMappingプロパティをMappingType.Hiddenにするという方法もあります。
'DataTableオブジェクトの作成 Dim dt As DataTable dt = New DataTable("DataTable1") 'DataColumnオブジェクトの作成 Dim dc As DataColumn dc = New DataColumn("Column1", GetType(String)) dc.ColumnMapping = MappingType.Hidden '列の追加 dt.Columns.Add(dc) '連結する DataGrid1.DataSource = dt
//DataTableオブジェクトの作成 DataTable dt = new DataTable("DataTable1"); //DataColumnオブジェクトの作成 DataColumn dc1 = new DataColumn("Column1", typeof(string)); dc1.ColumnMapping = MappingType.Hidden; //列の追加 dt.Columns.Add(dc1); //連結する DataGrid1.DataSource = dt;
注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。