DOBON.NET DOBON.NETプログラミング掲示板過去ログ

データグリッドのチェックボックスの制御

環境/言語:[WindowsXP,VB.NET,Framework1.1]
分類:[.NET]

初めて書き込みをします。
現在VB.NETでWindowsアプリを作っています。
データグリッド上にチェックボックスとテキストの項目があって、
各行のテキストの値を見て、チェック可・不可の制御をしたいのですが、
うまくできません。

私なりに調べて、各項目のReadOnlyでできるのかなと思ったのですが、
ReadOnly = true にしても、チェックができる状態です。

どのように記述したら、うまく制御できるでしょうか?
ご教授お願いいたします。

現在まで作成したコード
-----------------------------------------
(1)グリッドの初期設定
Dim dts As New DataGridTableStyle

dts.MappingName = "DataTable1"
dts.AllowSorting = False
dts.RowHeadersVisible = False

Dim textCol As New DataGridTextBoxColumn
textCol.MappingName = "TEXT"
textCol.HeaderText = "テキスト"
textCol.ReadOnly() = True
dts.GridColumnStyles.Add(textCol)

Dim checkCol As New DataGridBoolColumn
checkCol.MappingName = "CHECK"
checkCol.HeaderText = "チェック"
checkCol.Alignment = HorizontalAlignment.Center
checkCol.AllowNull = False
checkCol.ReadOnly() = False
dts.GridColumnStyles.Add(checkCol)

' テーブルスタイルの追加
DataGrid1.TableStyles.Add(dts)

-- -- -- -- -- -- -- -- -- --
(2)データを取得して表示する部分
Dim dt As New DataTable("DataTable1")

dt.Columns.Add("CHECK", GetType(Boolean))

'データベースに接続し、テキストのデータを取得
Try
Dim MyDataAdapter As New OdbcDataAdapter sSqlBuf,myConnection)

MyDataAdapter.Fill(dt)

Dim count As String = dt.Rows.Count()
Dim i As Integer
For i = 0 To count - 1
'テキストの値が1の時は、チェック不可
If Trim(dt.Rows(i).Item(0)) = "1" Then
dt.Rows(i).Table.Columns(1).ReadOnly = True
Else
dt.Rows(i).Table.Columns(1).ReadOnly = False
End If

Next i

Dim dv As DataView
dv = New DataView(dt)
dv.AllowNew = False
DataGrid1.DataSource = dv

Catch ex As Exception
End Try
-----------------------------------------
お世話になります。

■No15289に返信(chocoさんの記事)
要するに、セル単位で ReadOnly の設定を
したいという事ですよね?
出来るのかなぁ...。
■No15301に返信(なおこ(・∀・)さんの記事)
> 出来るのかなぁ...。
ReadOnly はじめこのあたりの設定はカラム単位の設定で、セルごとに
設定できるような設計にはなってなかったと思う。このサイトのサンプル
http://dobon.net/vb/dotnet/datagrid/datagridcombobox.html
とかを参考に自分で制御するコードを書くことになると思う。

DOBON.NET | プログラミング道 | プログラミング掲示板