SHOEISHA iD

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

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

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

japan.internet.com翻訳記事

DataGridViewコントロールを操作する101の方法

DataGridViewコントロールの取り扱い方法まとめ

ダウンロード ソースコード (126.6 KB)

DataViewでフィルタリングする

 DataGridViewコントロールに表示されるデータにフィルタをかけるにはDataViewオブジェクトを使用します。

'---create an instance of the table adapter---
Dim adapter As New CustomersTableAdapter

'---create an instance of the dataview class---
Dim dv As New DataView(adapter.GetData)
With dv
    .AllowNew = False
    .AllowDelete = True
    .Sort = "ContactTitle ASC, Address ASC"
    .RowFilter = "CustomerID LIKE 'B*'"
End With
DataGridView1.DataSource = dv

 上の例は、DataViewオブジェクトを使うことにより、DataGridViewコントロールにユーザーが新しい行を追加するのを許可したり(AllowNewプロパティ)、行を削除するのを許可したり(AllowDeleteプロパティ)できることを示しています。また、フィールドとソート順序を指定して行をソートすることもできます(Sortプロパティ)。さらに、SQLに似た式を指定してレコードにフィルタをかけることもできます(RowFilterプロパティ)。

 上の例では、行をContactTitleフィールドの昇順でソートし、さらにAddressフィールドの昇順でソートしています。Addressフィールドの降順でソートする場合は、次のように設定します。

.Sort = "ContactTitle ASC, Address DESC"

 図7に、ContactTitleフィールドとAddressフィールドを共に昇順でソートしたケースと、ContactTitleを昇順、Addressを降順でソートしたケースを示します。

図7 ContactTitleとAddressのソート順序による違い
図7 ContactTitleとAddressのソート順序による違い

列をソートする

 DataViewオブジェクトを使えばフィルタリングやソートを実行できますが、DataGridViewコントロールのSort()メソッドでもソートを制御できます。

'---sort based on the first column---
DataGridView1.Sort(DataGridView1.Columns(0), _
   System.ComponentModel.ListSortDirection.Descending)

 この例では、行を最初の列の降順でソートしています(図8)。

図8 最初の列を降順でソートする
図8 最初の列を降順でソートする

 プログラムによるソートとは別に、ユーザーが実行時にソートグリフ(列見出しの隣に表示される三角形のアイコン)をクリックして行を昇順または降順にソートすることも可能です。行がソートされないようにするには、SortModeプロパティを「NotSortable」に設定します。

'---set the sort mode for a column---
DataGridView1.Columns(1).SortMode = _
   DataGridViewColumnSortMode.NotSortable

プログラミングによって列を追加する

 これまで紹介した方法は、データセットまたはBindingSourceコントロールを用いて、DataGridViewコントロールにデータベースをバインドするというものでした。しかし、ときにはプログラミングによってDataGridViewコントロール内にさまざまなフィールドを作成し、ユーザーに値を設定させる場合もあります(同様に、プログラミングによって新しい行を追加することもできます)。DataGridViewコントロール内に列を作成するには、DataGridViewコントロールのColumnsプロパティのAdd()メソッドを使用します。次の例では、DataGridViewコントロール内に4つのフィールドを作成しています。

'---adding columns---
DataGridView1.Columns.Add("ID", "Product ID")
DataGridView1.Columns.Add("Name", "Product Name")
DataGridView1.Columns.Add("Description", "Description")
DataGridView1.Columns.Add("Price", "Price")

 図9は、このDataGridViewコントロールの表示結果です。

図9 DataGridViewコントロールに4つのフィールドを作成する
図9 DataGridViewコントロールに4つのフィールドを作成する

行を追加する

 DataGridViewコントロールに行を追加するには、RowsプロパティのAdd()メソッドを使用します。

'---add an empty row---
DataGridView1.Rows.Add()

 行を追加してそこに内容を割り当てるには、DataGridViewRowクラスのインスタンスを作成してからCreateCells()メソッドで行テンプレートを作成します。

For i As Integer = 0 To 9
    '---create a row---
    Dim item As New DataGridViewRow
    item.CreateCells(DataGridView1)
    With item
        .Cells(0).Value = i
        .Cells(1).Value = "Product " & i
        .Cells(2).Value = "Description of Product " & i
        .Cells(3).Value = "99.99"
    End With
    '---add the row---
    DataGridView1.Rows.Add(item)
Next

 行の各フィールドに割り当てる一連の値を配列に格納し、その配列を使用して新しい行を追加することもできます。

For i As Integer = 0 To 9
    DataGridView1.Rows.Add(New String() _
       {i, _
        "Product " & _
        i, _
        "Description of Product " & i, _
        "99.99"})
Next

 図10は、上の2つの例の出力です。

図10 プログラミングによってDataGridViewコントロールに新しい行を追加する
図10 プログラミングによってDataGridViewコントロールに新しい行を追加する

次のページ
セルにコンボボックスを表示する

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

japan.internet.com翻訳記事連載記事一覧

もっと読む

この記事の著者

japan.internet.com(ジャパンインターネットコム)

japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.comEarthWeb.com からの最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。

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

Wei-Meng Lee(Wei-Meng Lee)

Microsoft MVP受賞者。Microsoft社の最新テクノロジー実地研修を専門とするDeveloper Learning Solutions社を創設。.NETとワイヤレステクノロジーの開発者、指導者として知られる。国際的なカンファレンスでたびたび講演し、.NET、XML、ワイヤレステクノロジーに関す...

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

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

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/1120 2007/03/28 07:00

イベント

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

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

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

メールバックナンバー