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

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

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

Re[3]: dataGridViewのチェックボックス


(過去ログ 90 を表示中)

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

■53962 / inTopicNo.1)  dataGridViewのチェックボックス
  
□投稿者/ 半角カナ (7回)-(2010/09/30(Thu) 20:56:24)

分類:[.NET 全般] 

データベースでは、flgと言うカラムがあり、0 or 1と言う値を持っております。
データベースから取得した値をdataGridViewに表示させるのですが、flgカラム
の値を、チェックボックスとして表示させています。

0であればチェックなし
1であればチェックあり

表示までは出来ており、チェックされていないチェックボックスを選択した場合
セルのイベントが呼び出されると思いますが、その際にチェックした値を取得したいのですが、チェックする前の値を取得してしまいます。

■(1) □(0)→チェックした場合、1をデータとして取得したいのですが、
可能でしょうか?

dataGridView1.SelectedCells[0].Value;では出来ませんでした…。



長文で申し訳ありませんが、ご存知の方がいらっしゃいましたら
ご教授お願い致します。


引用返信 編集キー/
■53965 / inTopicNo.2)  Re[1]: dataGridViewのチェックボックス
□投稿者/ すなふきぬ (54回)-(2010/10/01(Fri) 00:27:31)
No53962 (半角カナ さん) に返信

> 表示までは出来ており、チェックされていないチェックボックスを選択した場合
> セルのイベントが呼び出されると思いますが、その際にチェックした値を取得したいのですが、チェックする前の値を取得してしまいます。
> 
> ■(1) □(0)→チェックした場合、1をデータとして取得したいのですが、
> 可能でしょうか?
> 
> dataGridView1.SelectedCells[0].Value;では出来ませんでした…。

DataGridViewでチェックボックス列を扱う場合は、CurrentCellDirtyStateChangedイベント内でチェック状態を確定してあげるとよいと思います。

VBのソースですいませんが、DataGridViewを継承したクラスを作成した時に似たような処理をしていたので載せておきます。


''' <summary>
''' チェックボックスの値が変更された場合は、即時反映する
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub DataGridViewEx_CurrentCellDirtyStateChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.CurrentCellDirtyStateChanged
	'データ変更がキャッシュに残っている場合
	If Me.IsCurrentCellDirty Then
		'イベント対象はチェックボックス列のみ
		If TypeOf Me.Columns(Me.CurrentCell.ColumnIndex) Is DataGridViewCheckBoxColumn Then
			'即時反映
			Me.CommitEdit(DataGridViewDataErrorContexts.Commit)
			'チェックボックス値変更イベントの発火
			RaiseEvent CellCheckChanged(Me, New DataGridViewCellEventArgs(Me.CurrentCell.ColumnIndex, Me.CurrentCell.RowIndex))
		End If
	End If
End Sub

引用返信 編集キー/
■53967 / inTopicNo.3)  Re[2]: dataGridViewのチェックボックス
□投稿者/ 半角カナ (8回)-(2010/10/01(Fri) 06:47:44)
No53965 (すなふきぬ さん) に返信
> ■No53962 (半角カナ さん) に返信
>
>>表示までは出来ており、チェックされていないチェックボックスを選択した場合
>>セルのイベントが呼び出されると思いますが、その際にチェックした値を取得したいのですが、チェックする前の値を取得してしまいます。
>>
>>■(1) □(0)→チェックした場合、1をデータとして取得したいのですが、
>>可能でしょうか?
>>
>>dataGridView1.SelectedCells[0].Value;では出来ませんでした…。
>
> DataGridViewでチェックボックス列を扱う場合は、CurrentCellDirtyStateChangedイベント内でチェック状態を確定してあげるとよいと思います。
>
> VBのソースですいませんが、DataGridViewを継承したクラスを作成した時に似たような処理をしていたので載せておきます。
>
>
> ''' <summary>
> ''' チェックボックスの値が変更された場合は、即時反映する
> ''' </summary>
> ''' <param name="sender"></param>
> ''' <param name="e"></param>
> ''' <remarks></remarks>
> Private Sub DataGridViewEx_CurrentCellDirtyStateChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.CurrentCellDirtyStateChanged
> 'データ変更がキャッシュに残っている場合
> If Me.IsCurrentCellDirty Then
> 'イベント対象はチェックボックス列のみ
> If TypeOf Me.Columns(Me.CurrentCell.ColumnIndex) Is DataGridViewCheckBoxColumn Then
> '即時反映
> Me.CommitEdit(DataGridViewDataErrorContexts.Commit)
> 'チェックボックス値変更イベントの発火
> RaiseEvent CellCheckChanged(Me, New DataGridViewCellEventArgs(Me.CurrentCell.ColumnIndex, Me.CurrentCell.RowIndex))
> End If
> End If
> End Sub
>

>>すなふきぬ さん

ソースまで教えて頂きありがとうございます。
DataGridViewEx_CurrentCellDirtyStateChangedを調べた所、cC#,VBもやり方が載っているサイトがありました。
教えて頂いたソースとサイトを参考にやってみます。教えて頂き有難うございました。


引用返信 編集キー/
■53968 / inTopicNo.4)  Re[3]: dataGridViewのチェックボックス
□投稿者/ 半角カナ (9回)-(2010/10/01(Fri) 06:47:56)
No53967 (半角カナ さん) に返信
> ■No53965 (すなふきぬ さん) に返信
>>■No53962 (半角カナ さん) に返信
>>
> >>表示までは出来ており、チェックされていないチェックボックスを選択した場合
> >>セルのイベントが呼び出されると思いますが、その際にチェックした値を取得したいのですが、チェックする前の値を取得してしまいます。
> >>
> >>■(1) □(0)→チェックした場合、1をデータとして取得したいのですが、
> >>可能でしょうか?
> >>
> >>dataGridView1.SelectedCells[0].Value;では出来ませんでした…。
>>
>>DataGridViewでチェックボックス列を扱う場合は、CurrentCellDirtyStateChangedイベント内でチェック状態を確定してあげるとよいと思います。
>>
>>VBのソースですいませんが、DataGridViewを継承したクラスを作成した時に似たような処理をしていたので載せておきます。
>>
>>
>>''' <summary>
>>''' チェックボックスの値が変更された場合は、即時反映する
>>''' </summary>
>>''' <param name="sender"></param>
>>''' <param name="e"></param>
>>''' <remarks></remarks>
>>Private Sub DataGridViewEx_CurrentCellDirtyStateChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.CurrentCellDirtyStateChanged
>> 'データ変更がキャッシュに残っている場合
>> If Me.IsCurrentCellDirty Then
>> 'イベント対象はチェックボックス列のみ
>> If TypeOf Me.Columns(Me.CurrentCell.ColumnIndex) Is DataGridViewCheckBoxColumn Then
>> '即時反映
>> Me.CommitEdit(DataGridViewDataErrorContexts.Commit)
>> 'チェックボックス値変更イベントの発火
>> RaiseEvent CellCheckChanged(Me, New DataGridViewCellEventArgs(Me.CurrentCell.ColumnIndex, Me.CurrentCell.RowIndex))
>> End If
>> End If
>>End Sub
>>
>
> >>すなふきぬ さん
>
> ソースまで教えて頂きありがとうございます。
> DataGridViewEx_CurrentCellDirtyStateChangedを調べた所、cC#,VBもやり方が載っているサイトがありました。
> 教えて頂いたソースとサイトを参考にやってみます。教えて頂き有難うございました。
>
>
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -