INDEX
DataGridViewの設定は、データを表示しながら調整するのが一番です。
- 空データでテーブル(列×行)を表示
- 簡易データ(数字連番)によるテーブル(列×行)を表示
- CSVデータファイルの読み込み
- XMLデータファイルの読み込み
- マルチ列のサンプル(標準コントロール)
- SQL Server データベース バインディング
列がテキストボックスで数値が含まれるデータをソートする場合、並び順が変わることに気をつけましょう。表示上は全て文字ですが、セルにデータをセットする際の型にによってソート結果が異なるからです。これは、上記のどの方法にも共通します。
本ソフトには、CSVファイルやXMLファイルのサンプルファイルを添付しているので参考にしてください。
空データで指定した列数×行数の領域を作成
「□データ生成」をオフにして「生成」ボタンをクリック
簡易データ(数字連番)によるテーブル(列×行)を表示
「□データ生成」をオンにして「生成」ボタンをクリック。指定値からはじまる連番から、指定した型で、指定した「列数×行数」でテーブルを作成します。
CSVデータファイルの読み込み
Encodingの指定と先頭行の列名指定を行って、CSVファイルを選択します。
日本語に対応するEncodingの種類
"日本語 シフトJIS", |
932, |
"shift_jis" |
"日本語 EUC", |
51932, |
"euc-jp" |
"日本語 JIS", |
50220, |
"iso-2022-jp" |
"日本語 JIS(1バイトカタカナ可)(CP50221)", |
50221, |
"csISO2022JP" |
"日本語 JIS(1バイトカタカナ可
- SO/SI)(CP50222)", |
50222, |
"" |
"日本語 (Mac)", |
10001, |
"x-mac-japanese" |
"IBM EBCDIC
(日本語カタカナ)", |
20290, |
"IBM290" |
"日本語 (JIS
0208-1990 および 0212-1990)", |
20932, |
"" |
"US-ASCII", |
20127, |
"us-ascii" |
"UTF-7", |
65000, |
"utf-7" |
"UTF-8", |
65001, |
"utf-8" |
"Unicode", |
1200, |
"utf-16" |
"Unicode
(ビッグ エンディアン)", |
1201, |
"unicodeFFFE" |
"UTF32", |
12000, |
"utf-32" |
XMLデータファイルの読み込み
XML Schema File (.xsd)にもサポートしています。XMLファイルと同じフォルダで同じファイル名であれば自動的に読み込みます。
マルチ列のサンプル(標準コントロール)
- DataGridViewTextBoxColumn:テキストボックス。数値や文字列に対応
- DataGridViewButtonColumn:ボタン。バインド時の自動的には非対応。通常、非バインド列で使用
- DataGridViewCheckBoxColumn:チェックボックス。Boolean値、CheckState値に対応
- DataGridViewComboBoxColumn:コンボボックス。バインド時の自動的には非対応。通常、非バインド列で使用
- DataGridViewImageColumn:イメージ。バイト配列、Imageオブジェクト、Iconオブジェクトに対応
- DataGridViewLinkColumn:リンク。バインド時の自動的には非対応。通常、非バインド列で使用
- カスタム列型:独自のコントロール
- DataGridViewTextBoxColumn:テキスト列(数値や文字列などのテキストベース値で使用する汎用列型)
編集時はTextBoxコントロールがアクティブなセルに表示されるので、ユーザーはセル値を変更できます。
セル値は、表示用の文字列に自動的に変換されます。ユーザーが入力または変更した値は自動的に解析され、適切なデータ型のセル値が生成されます。この変換は、DataGridView
コントロールの CellFormatting イベントと CellParsing
イベントを処理することでカスタマイズできます。列のセル値のデータ型は、列のValueTypeプロパティで指定されます。
- DataGridViewButtonColumn:ボタン列
特定のレコード行の詳細を別個のウィンドウに子レコードなどを表示するという操作を行う際に便利です。自動でバインドすることはできません。ボタン列を手動で作成し追加する必要があります。また、ボタンクリックはDataGridView.CellClickイベントで処理します。
- DataGridViewCheckBoxColumn:チェックボックス列
Boolean値とCheckState値に対応し、Boolean値は、ThreeStateプロパティの値に応じて、2ステートまたは3ステート
チェック ボックスとして表示できます。列がCheckState値にバインドされると、ThreeStateプロパティ値は既定でtrueです。
通常、チェック ボックス セル値は、他のデータと同様にストレージ用として、または一括操作を実行するために使用されます。
ユーザーがチェック
ボックス セルをクリックしたときに即座に応答する場合は、CellClick
イベントを処理できますが、このイベントは、セル値が更新される前に発生します。クリックした時点で新しい値が必要な場合、1
つには、現在値に基づいて予測値を計算する方法があります。
これとは別に、変更を即座にコミットし、CellValueChanged
イベントを処理して応答する方法もあります。
セルがクリックされたときに変更をコミットするには、CurrentCellDirtyStateChanged
イベントを処理する必要があります。このハンドラでは、現在のセルがチェック ボックス セルの場合、CommitEdit
メソッドを呼び出し、Commit 値を渡します。
- DataGridViewComboBoxColumn:コンボボックス列
限定された値のデータ入力に利用します。すべてのセルで共通に使用するドロップダウン
リストは、ComboBoxドロップダウンリストの場合と同様に、Items
プロパティによって返されたコレクションを通じて手動で設定することも、DataSourceプロパティ、DisplayMemberプロパティ、およびValueMemberプロパティを通じてデータ
ソースにバインドして設定することもできます。
DataGridView コントロールによって使用されるデータ
ソースに実際のセル値をバインドするには、System.Windows.Forms.DataGridViewComboBoxColumn の
DataPropertyName プロパティを設定します。
コンボ ボックス列は、DataGridView コントロールをデータ
バインディングしたときに自動的に生成されるわけではありません。コンボ ボックス列を使用するには、コンボ ボックス列を手動で作成し、Columns
プロパティによって返されたコレクションに追加する必要があります。
- DataGridViewImageColumn:イメージ列
データ
ソースから自動的に設定でき、非バインド列の場合は手動で設定できます。また CellFormatting
イベントのハンドラで動的に設定することもできます。
データ ソースから自動的に設定する場合、Image
クラスでサポートされるすべての形式、OLEピクチャ形式(Microsoft Access や Northwind サンプル
データベース)を含む各種イメージ形式のバイト配列が使用できます。
イメージ列の手動設定は、DataGridViewButtonColumn
の機能を独自の外観で提供する場合に役立ちます。System.Windows.Forms.DataGridView.CellClick
イベントを処理することにより、イメージ セル内のクリックに応答できます。
CellFormatting
イベントのハンドラでのイメージ列のセルの設定は、計算値やイメージ形式以外の値にイメージを提供する場合に役立ちます。たとえば、"Risk"
列には、アイコンとして表示する "high"、"middle"、"low" などの文字列型の値を設定できます。また、"Image"
列には、イメージのバイナリ値や読み込む必要があるイメージの場所が格納できます。
- DataGridViewLinkColumn:リンク列
ハイパーリンクを含むセルの列を表示できます。これは、データ ソース内の URL
値を表示するのに便利です。またボタン列の代わりに使用して、子レコードを表示するウィンドウを開くなど、特別な動作を提供することもできます。
リンク列は、DataGridView コントロールをデータ
バインディングしたときに自動的に生成されるわけではありません。リンク列を使用するには、リンク列を手動で作成し、Columns
プロパティによって返されたコレクションに追加する必要があります。
ユーザーによるリンクのクリックに応答するには、CellContentClick
イベントを処理します。このイベントは、ユーザーがセル内の場所をクリックしたときに発生する CellClick イベントや
CellMouseClick イベントとは別です。
DataGridViewLinkColumn
クラスには、クリックの前後およびクリック時のリンクの外観を変更するプロパティが用意されています。
SQL Server データベース バインディング
SQL Serverのデータベースに対応
接続文字列とSelect文を入力して「DBバインド」ボタンをクリック。
SQLServerへNorthwindサンプルを追加してDataGridViewへ表示するまでの手順
- Northwindサンプルのダウンロード
http://www.microsoft.com/en-us/download/details.aspx?id=23654
- Northwindサンプルのインストール
SQL2000SampleDb.msiを実行
- Northwindのアタッチ
Microsoft SQL Server Management Studioよりデータベースへアタッチする
C:\SQL Server 2000 Sample Databases\NORTHWND.MDF
※アクセス権限でエラーが発生した場合、
C:\SQL Server 2000 Sample Databases\フォルダのセキュリティ権限にUserの「変更や書き込み」を有効にする必要がある。
- DGVPadよりデータベースを表示
接続文字列例:Data Source=<SQLサーバー名>;Initial Catalog=Northwind;Integrated
Security=True
Select文例:SELECT * FROM Employees