- - PR -
DataGrid(WinForm+VB)のCheckBox操作について
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2004-09-06 12:11
お世話さまです。
開発言語はWindowsフォーム+Vb.NETです。 CheckBoxを配置したDataGridにおいて下記のようなことを やりたいのですが、どのようにすればよいのでしょうか? @データによって当該行のCheckBoxをDisableまたはInVisibleにする。 Aボタンの押下イベントでチェック可能な全ての行のCheckBoxをTrueにする。 B全ての行のCheckBoxの値(True/False)を取得する。 サンプルとして2列(都道府県、CheckBox)からなるDataGrid を表示するコードを掲載致します。 (Tbl_Kenには都道府県のコードをセット済みとします。) ' テーブルの列を作成 Dim dataSet1 As New DataSet("都道府県") Dim dataTable1 As DataTable = dataSet1.Tables.Add("都道府県テーブル") Dim dataClumn1 As DataColumn = dataTable1.Columns.Add("都道府県") Dim dataClumn2 As DataColumn = dataTable1.Columns.Add("選択", GetType(Boolean)) ' テーブルのスタイルを作成 Dim dgTableStyle As New DataGridTableStyle dgTableStyle.MappingName = dataTable1.TableName DataGrid1.TableStyles.Add(dgTableStyle) ' テーブルの列のスタイルを作成 Dim dgColumnStyle1 As New DataGridTextBoxColumn Dim dgColumnStyle2 As New DataGridBoolColumn dgColumnStyle1.MappingName = dataClumn1.ColumnName dgColumnStyle2.MappingName = dataClumn2.ColumnName ' ヘッダーにタイトルを設定 dgColumnStyle1.HeaderText = dataClumn1.ColumnName dgColumnStyle2.HeaderText = dataClumn2.ColumnName ' チェック・ボックスにNULLは認めない。常にONかOFFを指定 dgColumnStyle2.AllowNull = False ' 列のスタイルをテーブルスタイルに登録 dgTableStyle.GridColumnStyles.Add(dgColumnStyle1) dgTableStyle.GridColumnStyles.Add(dgColumnStyle2) ' テーブルにデータを追加 Dim ken_name As String For i = 0 To 46 Select Case Tbl_Ken(i) Case "01" : ken_name = "北海道" Case "02" : ken_name = "青 森" ・・・ Case "47" : ken_name = "沖 縄" End Select dataTable1.Rows.Add(New [Object]() {ken_name, False}) Next ' データグリッドにテーブルを表示する DataGrid1.SetDataBinding(dataSet1, dataTable1.TableName) @についてですが、たとえばTbl_ken(i)の値が"13"(東京)の 場合にのみCheckBoxを非表示(ないしDisable)にする場合の 実装方法が解りません。 Aはあるボタンのクリックイベントで東京を除く全ての CheckBoxをチェックした状態(True)にする実装方法が解りません。 BはDataGridのごくごく基本だと思うのですが、 ユーザが任意にチェックしたCheckBoxの判定方法が解りません。 以上、解らないことだらけで情けないやら申し訳ないやら なのですが、ご教示頂けると助かります。^^; 宜しくお願い致します。 |
|
投稿日時: 2004-09-06 14:51
自己レスです。
AとBについてはなんとか実現できました。 AはDataGridにCheckBoxの列の値をセットしたデータテーブル を再バインドすることで実装できました。 Bについては DataGridの行ループの中で下記のように判定できることが判りました。 For i = 0 To 46 If DataGrid1(i, 1) = True Then … Else … End If Next で、未だに@の実装方法が判りません。 これについてご存知の方、どうぞ宜しくお願い致します。 |
|
投稿日時: 2004-09-06 16:50
またまた自己レスです。^^;
@についてですが、下記のようにしてTrueでもFalseでもない状態を 表示させてみました。 ' チェック・ボックスにNULLは認める dgColumnStyle3.AllowNull = True dgColumnStyle4.AllowNull = True For i = 0 To 46 if Tbl_Ken(i) = "13" Then dataTable1.Rows.Add(New [Object]() {ken_name, Nothing}) Else dataTable1.Rows.Add(New [Object]() {ken_name, False}) End Select Next これで、一応指定不可であることは視覚的にはなんとなく 判るのですが、チェックしようと思えばできてしまい、 当初の意図を実装できてはいません。 おまけに、False⇒True⇒Null という3サイクルになってしまい オン/オフの操作が煩雑にもなってしまっています。 うーむ、完全にDisableにする方法はないのでしょうか? |
1