過去ログなど調べましたが、結果が得られないのでどうか教えてください。
OS:WindXP(SP2) 言語:VB2005 DB:Oracle9i で開発しています。
あるテーブルのデータをDataGridViewに表示しています。
その際に、Number(1,0)型で1か0しかデータが入っていない
フィールドの表示をチェックボックスにしてデータが1の時に、
チェックボックスのチェックを入れるようにしたいのですが
うまくいきません。
何か方法はありせんでしょうか?
教えてください。お願いします。
デザイナで既にチェックボックスにしてるんですよね?
でしたら、Rows.Addする時に、1ならTrueとすれば入りませんか?
例:
For Each wk in var
Me.DataGridView.Rows.Add( IIf(wk.Check = "1", True, False ))
Next
ごめんなさい。上記の例、文字列になってました。
Me.DataGridView.Rows.Add( IIf(wk.Check = "1", True, False ))
↓
Me.DataGridView.Rows.Add( IIf(Cint(wk.Check) = 1, True, False ))
等で対応してみてはどうでしょうか。
何ででしょうね?
正常にバインドされていれば、勝手にチェックオンになるはずですが・・・
bool型のデータをDataGridViewにバインドすれば自動的にDataGridViewCheckBoxColumnが使用されます。
http://dobon.net/vb/dotnet/datagridview/datagridviewcheckboxcolumn.html
>ひぃさん早速の返信ありがとうございます。
すいません。説明不足でした。
デザイナで列の追加編集は行わずに
DataGridView.DataSource = J60_DataSet.Tables("J60M")
という方法をとっています
(後でDataRowStateを使用したいため)
>やじゅ さん早速の返信ありがとうございます。
>http://dobon.net/vb/dotnet/datagridview/datagridviewcheckboxcolumn.html
は調べたのですが解決には至りませんでした。
SQL文のフィールドの型が数値なのが問題なのでしょうか?
現状ではDataGridViewにはフィールド値の1と0しか表示されません・・・
>SQL文のフィールドの型が数値なのが問題なのでしょうか?
試しに文字列型でやってみるとか
掲示板ではいつ回答がもらえるか分からないですからね
どんどん思いついたことを試さないと時間がもったいないですよ。
> Number(1,0)型で
それは、Oracle 側の話であって、DataTable の列の事では無いですよね。
DataGridView が見ているのは、Oracle のデータではなく、DataTable に
格納されたデータなのですから、ここで気にするべきは、DataColumn の
DataType に割り当てられた型(Decimal かな?)の方でしょう。
> デザイナで列の追加編集は行わずに
> DataGridView.DataSource = J60_DataSet.Tables("J60M")
> という方法をとっています
つまり、AutoGenerateColumns = True にしている、という事ですよね。
> データが1の時に、チェックボックスのチェックを入れるようにしたい
そのためには、それぞれの列のセルタイプを明示的に指定せねば
なりませんし、1 と 0 のどちらを On とするかも指定する必要があります。
Boolean 型の列であれば、自動的にチェックボックス列になりますが、
今回の DataTable は、そうはなっていませんよね。
(Oracle の列である以上、ブール型になる事は無いでしょうし)
要するに、チェックボックスとして表示したいなら、そのための
コードが必要であるという事です。このコードは、デザイン時に
設定しておいても良いですし、コードで書いても構いませんが、
割り当てるテーブルが固定的な場合は、デザイナで設定した方が楽でしょう。
プログラムで指定する場合は、こんな感じ。
Dim Col As New DataGridViewCheckBoxColumn()
Col.HeaderText = "列2" '列ヘッダのテキスト
Col.DataPropertyName = "Column2" '連結列の名前
Col.TrueValue = 1 'チェックボックス=On の値
Col.FalseValue = 0 'チェックボックス=Off の値
DataGridView1.Columns.Insert(0, Col) '先頭列に割り当て
なるほど、oracleだとbool型が無いから、
そういう設定が必要なんですね。
はー、とても偉そうななど言えませんな
数値型でいいか文字列型とするかってとこで
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?mode=viewtopic&topic=13764&forum=7&start=16
魔界の仮面弁士さんの方法で解決しました。
>やじゅさんアドバイスありがとうございました。
>魔界の仮面弁士さん具体的なアドバイスありがとうございました。
ツイート | ![]() |