Datagridviewをデータテーブルにバインドしました。私はセルの値に応じて行を非表示にするか、たとえばセルの値が "N"の場合は行を表示し、それ以外の場合は "Y"の行を非表示にします。データソースの変更時にDatagridviewを更新する
のDataColumnのようにセットアップです:私はまた、以下のようにするDataGridViewのCellValueChangedイベントを処理している
New DataColumn With {.ColumnName = "Rec", .AllowDBNull = False, .DefaultValue = "N", .DataType = GetType(String)}
:
Private Sub DataGridView1_CellValueChanged(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellValueChanged
If CType(sender, DataGridView).Columns(e.ColumnIndex).HeaderText.Equals("Rec") Then
CType(sender, DataGridView).Rows(e.RowIndex).Visible = CType(sender, DataGridView).Item(e.ColumnIndex, e.RowIndex).Value.Equals("N")
End If
End Sub
しかし、私は、プログラム( "Y" に値を変更したときと値がグリッドで変更されているのがわかります)、行はまだ表示されています。私もイベントハンドラの中に休憩を入れ、それは解雇されません!だから質問、私は "Y"にセルの値を変更すると、datagridviewrowを非表示にするのですか?
EDIT
ただ、当面の問題にいくつかのより多くの明快さを追加するには、これは私がプログラムでグリッドのデータソースを更新する方法である:
CType(DataGridView1.DataSource, DataTable).Item("Rec") = "Y"
私が直接グリッドを更新するため、発射できますセルの値が更新されるたびに、バインディングを中断してからグリッドへのバインディングを再開しなければならない場合は、Cellvaluechangedイベントが発生し、CurrencyManagerエラーがスローされます。これは小さなデータセットでさえ、カタツムリのペースで機能します(リフレクションによって実装されたダブルバッファリングでさえ)。
「DataTable」から行を削除します。 – Fabio
データテーブルから行を削除すると、その行を更新してdatagridviewで再び表示できるようになりません。 – Nepaluz
DataGridviewで行を非表示にすると、セルの値を 'N'に戻すことができますか? – Fabio