C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[8]: DataGridView内チェックボックスチェック


(過去ログ 74 を表示中)

[トピック内 12 記事 (1 - 12 表示)]  << 0 >>

■43260 / inTopicNo.1)  DataGridView内チェックボックスチェック
  
□投稿者/ だい (5回)-(2009/11/04(Wed) 11:12:26)

分類:[.NET 全般] 

質問させていただきます。

DataGridViewにDBの値をデータセットにセットし、表示させています。
先頭列はチェックボックスを表示しています。

そのチェックボックスにチェックをつけて、削除を行うロジックを組んでいるのですが、チェックボックスの値がすべてNothingになっています。

Sub Btn_Del_Clickイベント

DGV = ZForm.Dgv_Data

For i = 0 to Dgv_Data.RowCount - 1
If DGV(0,i).Value = True Then  ←チェックされていてもNothingになっている
〜データを削除する〜
End If

わかる方教えてください。
引用返信 編集キー/
■43262 / inTopicNo.2)  Re[1]: DataGridView内チェックボックスチェック
□投稿者/ gtk2k (106回)-(2009/11/04(Wed) 12:01:25)
2009/11/04(Wed) 13:38:59 編集(投稿者)

削除
引用返信 編集キー/
■43264 / inTopicNo.3)  Re[2]: DataGridView内チェックボックスチェック
□投稿者/ gtk2k (107回)-(2009/11/04(Wed) 12:04:39)
Page_LoadのときにGridViewにDataSourceをセットしていると思うけど、
PostBackかどうかの判定なしにセットしているかと思われる。
PostBackのときはセットしないようにすればいいと思われる。
引用返信 編集キー/
■43278 / inTopicNo.4)  Re[3]: DataGridView内チェックボックスチェック
□投稿者/ だい (6回)-(2009/11/04(Wed) 13:20:09)
No43264 (gtk2k さん) に返信
> Page_LoadのときにGridViewにDataSourceをセットしていると思うけど、
> PostBackかどうかの判定なしにセットしているかと思われる。
> PostBackのときはセットしないようにすればいいと思われる。

ありがとうございます。

クライアントがファイルサーバーにあるmdbからデータを取得し、フォーム上のDataGrudViewに表示するという簡単なアプリです。
ブラウザは使っていません。
引用返信 編集キー/
■43279 / inTopicNo.5)  Re[4]: DataGridView内チェックボックスチェック
□投稿者/ とも (9回)-(2009/11/04(Wed) 13:32:57)
グリッドって値の取得方法ってそんなのだったっけ。
グリッド.rows.cellsみたいなのありませんでした?
引用返信 編集キー/
■43280 / inTopicNo.6)  Re[3]: DataGridView内チェックボックスチェック
□投稿者/ 魔界の仮面弁士 (1374回)-(2009/11/04(Wed) 13:35:35)
No43264 (gtk2k さん) に返信
>> DataGridViewにDBの値をデータセットにセットし、表示させています。
> Page_LoadのときにGridViewにDataSourceをセットしていると思うけど、
GridView ではなく、DataGridView と書かれていますよ。

# System.Web.UI.WebControls.GridView
# System.Windows.Forms.DataGridView


> チェックボックスの値がすべてNothingになっています。
該当する DataGridViewCheckBoxColumn の
ThreeState / TrueValue / FalseValue プロパティはどうなっていますか?

マッピングされた DataColumn.DataType のデータ型によっては、
上記のプロパティを調整しなければならない可能性があります。
引用返信 編集キー/
■43281 / inTopicNo.7)  Re[4]: DataGridView内チェックボックスチェック
□投稿者/ だい (7回)-(2009/11/04(Wed) 13:40:36)
No43280 (魔界の仮面弁士 さん) に返信
> ■No43264 (gtk2k さん) に返信
> >> DataGridViewにDBの値をデータセットにセットし、表示させています。
>>Page_LoadのときにGridViewにDataSourceをセットしていると思うけど、
> GridView ではなく、DataGridView と書かれていますよ。
>
> # System.Web.UI.WebControls.GridView
> # System.Windows.Forms.DataGridView
>
>
>>チェックボックスの値がすべてNothingになっています。
> 該当する DataGridViewCheckBoxColumn の
> ThreeState / TrueValue / FalseValue プロパティはどうなっていますか?
>
> マッピングされた DataColumn.DataType のデータ型によっては、
> 上記のプロパティを調整しなければならない可能性があります。


ありがとうございます。

データ型はすべてStringです。

いろいろとやってみて、チェックボックスClickイベントで、DataGridViewの0列のValueをTrueにしてみたところ、
うまくいきました。

もしかしたら、チェックボックスとDataGridViewオブジェクトがそれぞれ別なので、DGV(0,i).Valueのところはチェックボックスを見ているのではなくて、
DataGridViewのセルの値を見ているのかなと思いましたが、いかがでしょうか?
引用返信 編集キー/
■43282 / inTopicNo.8)  Re[5]: DataGridView内チェックボックスチェック
□投稿者/ 魔界の仮面弁士 (1375回)-(2009/11/04(Wed) 14:10:13)
No43281 (だい さん) に返信
> データ型はすべてStringです。

その場合には、デザイン時(または実行時)に DataGridViewCheckBoxColumn のプロパティを
適切に設定してあげてください。

 DataPropertyName = DataTable にマッピングさせる列名
 FalseValue       = オフの時に書き込まれる文字列
 TrueValue        = オンの時に書き込まれる文字列

これが適切で無い場合、.Value が Nothing となる可能性があります。


たとえば後述のコードを実行すると、そのままボタンを押せば
  False,false,False
  False,false,False
  False,false,False
  True,true,True
  True,true,True
  True,true,True
と出力されますが、ここで各行のチェックボックスを
 ・何もしない(Off なら Off のまま、On なら On のまま)
 ・クリック(Off なら On にし、On なら Off にする)
 ・2回クリック(Off → On → Off、On → Off → On にする)
の状態にしてからボタンを押すと、リストボックスの内容が
  False,false,False
  True,True,True
  False,,False
  True,true,True
  False,,False
  True,True,True
となり、列2 に[Nothing]の状態が表れてしまいます。


Public Class Form1
    Private tbl As New DataTable()
    Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
        tbl.Columns.Add("列1", GetType(String))
        tbl.Columns.Add("列2", GetType(String))
        tbl.Columns.Add("列3", GetType(Boolean))
        tbl.Rows.Add("False", "false", False)
        tbl.Rows.Add("False", "false", False)
        tbl.Rows.Add("False", "false", False)
        tbl.Rows.Add("True", "true", True)
        tbl.Rows.Add("True", "true", True)
        tbl.Rows.Add("True", "true", True)


        'これらの処理は、デザイン時に行っておく事も出来ます。
        DataGridView1.Columns.Clear()
        Dim col1 As New DataGridViewCheckBoxColumn()
        Dim col2 As New DataGridViewCheckBoxColumn()
        Dim col3 As New DataGridViewCheckBoxColumn()

        '列1のみ値を指定し、他2つは未設定のまま
        col1.FalseValue = "False"
        col1.TrueValue = "True"
        col1.DataPropertyName = "列1"
        col2.DataPropertyName = "列2"
        col3.DataPropertyName = "列3"

        DataGridView1.Columns.Add(col1)
        DataGridView1.Columns.Add(col2)
        DataGridView1.Columns.Add(col3)


        DataGridView1.AllowUserToAddRows = False
        DataGridView1.DataSource = tbl
    End Sub

    Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
        ListBox1.BeginUpdate()
        ListBox1.Items.Clear()
        For row As Integer = 0 To DataGridView1.RowCount - 1
            ListBox1.Items.Add(String.Format("{0},{1},{2}", _
                DataGridView1(0, row).Value, _
                DataGridView1(1, row).Value, _
                DataGridView1(2, row).Value))
        Next
        ListBox1.EndUpdate()
    End Sub
End Class

引用返信 編集キー/
■43290 / inTopicNo.9)  Re[6]: DataGridView内チェックボックスチェック
□投稿者/ だい (8回)-(2009/11/04(Wed) 17:24:30)
No43282 (魔界の仮面弁士 さん) に返信

同じようにやってみましたが、Trueは正常にいってますが、Falseになりません。

相変わらず初期値はNothingです。
引用返信 編集キー/
■43291 / inTopicNo.10)  Re[7]: DataGridView内チェックボックスチェック
□投稿者/ だい (9回)-(2009/11/04(Wed) 18:07:29)
No43290 (だい さん) に返信
> ■No43282 (魔界の仮面弁士 さん) に返信
>
追加ですみません。

DataPropertyNameというのは、DBの列名ということでしょうか?
だとしたら、DBにはこのチェックボックス列に紐付けられる列というのは存在しません…。

DBのデータは2列目以降に表示し、1列目はチェックボックスで、そのデータを削除対象とする時にチェックをつけます。
引用返信 編集キー/
■43293 / inTopicNo.11)  Re[7]: DataGridView内チェックボックスチェック
□投稿者/ ヴァン (30回)-(2009/11/04(Wed) 18:19:09)
No43290 (だい さん) に返信
> ■No43282 (魔界の仮面弁士 さん) に返信
>
> 同じようにやってみましたが、Trueは正常にいってますが、Falseになりません。
>
> 相変わらず初期値はNothingです。

自分も以前検討しましたけど、チェックが入った場合は「True」が返ってきた。
しかし、チェックが入っていない時は「Nothing」しか返ってこなかった覚えが...
なので、「False」は期待しなくなりました。
引用返信 編集キー/
■43294 / inTopicNo.12)  Re[8]: DataGridView内チェックボックスチェック
□投稿者/ だい (10回)-(2009/11/04(Wed) 18:29:37)
No43293 (ヴァン さん) に返信
> ■No43290 (だい さん) に返信
>>■No43282 (魔界の仮面弁士 さん) に返信
>>
>>同じようにやってみましたが、Trueは正常にいってますが、Falseになりません。
>>
>>相変わらず初期値はNothingです。
>
> 自分も以前検討しましたけど、チェックが入った場合は「True」が返ってきた。
> しかし、チェックが入っていない時は「Nothing」しか返ってこなかった覚えが...
> なので、「False」は期待しなくなりました。


いろいろやっているうちにTrueにすらならなくなりました…。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -