DOBON.NET プログラミング道: .NET Framework, VB.NET, C#, Visual Basic, Visual Studio, インストーラ, ...

DataGridの列を削除する、列を非表示にする

注意:ここで紹介しているDataGridは、System.Windows.Forms名前空間のDataGrid(Windowsフォーム)です。System.Web.UI.WebControls名前空間のDataGrid(Webフォーム)ではありません。

DataGridの列を削除する

DataGridに表示されている列を削除するには、GridColumnStylesCollection.RemoveメソッドかRemoveAtメソッドを使います。この時、列スタイルが設定されている必要があります。なお、列スタイルの設定方法はこちらをご覧ください。

ここではDataGrid1(DataGridオブジェクト)にDataTable1(DataTableオブジェクト、TableName="DataTable1")が連結されているものとし、列"Column1"を削除します。

VB.NET
コードを隠すコードを選択
'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
C#
コードを隠すコードを選択
//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メソッドの使用法です。

VB.NET
コードを隠すコードを選択
'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
C#
コードを隠すコードを選択
//GridColumnStylesCollection.Removeメソッドで列を削除する
GridColumnStylesCollection gcsc;
gcsc = DataGrid1.TableStyles["DataTable1"].GridColumnStyles;

//"Column1"を削除する
//"Column1"がGridColumnStylesCollection内にあるか調べる
if (gcsc.Contains("Column1"))
{

    //削除する
    gcsc.Remove(gcsc["Column1"]);
}

DataGridの列を非表示にする

次に列を非表示にする方法を考えてみます。

一番手っ取り早い方法は列の幅を0にすることです。列の幅を変更する方法はこちらをご覧ください。

またDataColumnオブジェクトのColumnMappingプロパティをMappingType.Hiddenにするという方法もあります。

VB.NET
コードを隠すコードを選択
'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
C#
コードを隠すコードを選択
//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;

注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。

  • .NET Tipsをご利用いただく際は、注意事項をお守りください。