ヘッダー

VB.NET 2002 対応 VB.NET 2003 対応

 

列の幅を指定する

ここでは、プログラムからデータグリッドの列幅を設定・変更する方法を示します。プロパティウィンドウを使って列幅を指定する例は 図解 基礎解説 DataGridに明示的に列を追加する をご覧下さい。

 

1.単純な例

以下の例では[人物]テーブルの[備考]列の幅を200にする。

VB.NET2002対応 VB.NET2003対応


DataGrid1.TableStyles("人物").GridColumnStyles("備考").Width = 200
 

メモ: テーブル名[人物]も列名[備考]もあらかじめデータグリッドのMappingNameとして登録しておく必要があります。MappingNameをプロパティウィンドウから設定する方法は図解 基礎解説 DataGridに明示的に列を追加する をご覧下さい。

 

2.参考:データベースからデータを取得して列幅を指定する完全な例

以下の例では、SQL Server付属のサンプルデータベース pubs から[authors]テーブルの内容を読み込んでDaraGridに表示する。

SQL Server以外のデータベースでもデータ取得部分を変更すれば同様の操作が可能。

VB.NET2002対応 VB.NET2003対応

'●データテーブルの作成

'データベースにアクセスしてデータを取得する

Dim Cn As SqlClient.SqlConnection

'データベースへの接続方法は環境により異なります。以下の行を適当に書き換えてください。
Cn = New SqlClient.SqlConnection("Server=(local);User ID=sa;Password=;Initial Catalog=pubs")

Dim sqlSelect As New SqlClient.SqlCommand("SELECT * FROM authors", Cn)
Dim Adapter As New SqlClient.SqlDataAdapter(sqlSelect)
Dim Table As New DataTable("authors")

Adapter.Fill(Table)

'●データグリッド側の受け皿を作成

DataGrid1.TableStyles.Add(New DataGridTableStyle)
DataGrid1.TableStyles(0).MappingName = Table.TableName

Dim Column1 As New DataGridTextBoxColumn
Dim Column2 As New DataGridTextBoxColumn
Dim Column3 As New DataGridTextBoxColumn

Column1.MappingName = "au_id"
Column2.MappingName = "au_lname"
Column3.MappingName = "address"

Column1.Width = 100 '1列目の幅を設定
Column2.Width = 100 '2列目の幅を設定
Column3.Width = 150 '3列目の幅を設定

DataGrid1.TableStyles(0).GridColumnStyles.Add(Column1)
DataGrid1.TableStyles(0).GridColumnStyles.Add(Column2)
DataGrid1.TableStyles(0).GridColumnStyles.Add(Column3)

'●データテーブルをデータグリッドにセット

DataGrid1.DataSource = Table

メモ:この例 で、後から列幅を変更するには次のようにします。

DataGrid1.TableStyles("authors").GridColumnStyles("Address").Width = 200

メモ:多くのプログラマはプロパティウィンドウを使ってマッピングや列幅を設定し、プログラムを使ってデータを取得します。この例のようにすべてをプログラムで行うのは柔軟性が重視される場合です。

 

3.参考:データベースとは無関係にデータをセットして列幅を指定する完全な例

 

VB.NET2002対応 VB.NET2003対応

Dim Table As New DataTable("人物")
Dim Row As DataRow

'●データテーブルの作成

'▼テーブルの構造を定義

Table.Columns.Add("名前", GetType(String))
Table.Columns.Add("年齢", GetType(Integer))
Table.Columns.Add("備考", GetType(String))

'▼テーブルのデータを作成

Row = Table.NewRow
Row("名前") = "徳川家康"
Row("年齢") = 20
Row("備考") = "江戸幕府を開いた。"
Table.Rows.Add(Row)

Row = Table.NewRow
Row("名前") = "豊臣秀吉"
Row("年齢") = 30
Row("備考") = "朝鮮に出兵した。"

Table.Rows.Add(Row)
Row = Table.NewRow
Row("名前") = "織田信長"
Row("年齢") = 40
Row("備考") = "本能寺の変で命を落とした。"

Table.Rows.Add(Row)

'●データグリッド側の受け皿を作成

DataGrid1.TableStyles.Add(New DataGridTableStyle)
DataGrid1.TableStyles(0).MappingName = Table.TableName

Dim Column1 As New DataGridTextBoxColumn
Dim Column2 As New DataGridTextBoxColumn
Dim Column3 As New DataGridTextBoxColumn

Column1.MappingName = "名前"
Column2.MappingName = "年齢"
Column3.MappingName = "備考"

Column1.Width = 100 '1列目の幅を設定
Column2.Width = 100 '2列目の幅を設定
Column3.Width = 150 '3列目の幅を設定

DataGrid1.TableStyles(0).GridColumnStyles.Add(Column1)
DataGrid1.TableStyles(0).GridColumnStyles.Add(Column2)
DataGrid1.TableStyles(0).GridColumnStyles.Add(Column3)

'●データテーブルをデータグリッドにセット

DataGrid1.DataSource = Table

メモ:この例で、後から列幅を変更するには次のようにします。

DataGrid1.TableStyles("人物").GridColumnStyles("年齢").Width = 50