Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
DataGridViewにFilterをかけたときの再描画
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=9689#CommentId15128
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
hoido
 (社会人)
投稿日時
2010/7/3 09:58:07
いつもお世話になっております。
早速ですが、現在フォーム上にTabControlが3個
それぞれのページにDataGridViewExが1個配置されており、DataGridViewExが合計13個配置されています。
すべてのDataGridViewExにFilterをかけているのですがFilter実行時表示が更新されているものもあれば更新されていないものあります。
ただ、実際FilterがかかっていないかというとDataGridViewExを選択すると正常に表示されるのでFilterはちゃんとかかっているようです。
現在のプログラムは下記の通りで、フォーム上からTabControlを検索し、見つかればそのPage内にDataGridViewExがあるかどうか検索。その後入力日等でFilterをかけています。
Private Sub DataGridFilter()
Dim SelectDgv As String = ""
For Each oDgv In Me.Controls
If oDgv.GetType Is GetType(TabControl) Then '--TabControlの検索
For Each ooDgv In CType(oDgv, TabControl).Controls
If ooDgv.GetType Is GetType(TabPage) Then '--TabPageの検索
For Each oooDgv In CType(ooDgv, TabPage).Controls
If oooDgv.GetType Is GetType(DataGridViewEx) Then '--DataGridViewExの検索
SelectDgv = Replace(CType(ooDgv, TabPage).Name, "Tab_", "")
'▼選択日でフィルターをかける
If CType(oooDgv, DataGridViewEx).Name = "dgv_" & SelectDgv Then
Dim Table As DataTable = DirectCast(CType(oooDgv, DataGridViewEx).DataSource, DataTable)
Dim View As DataView = Table.DefaultView
Select Case CStr(CType(oooDgv, DataGridViewEx).Tag)
Case "職場1"
View.RowFilter = "入力日 =#" & SelectDay & "# AND 職場ID ='" & CInt(Me.cbo_在籍職場.SelectedValue) & "' AND 社員ID ='" & CInt(Me.cbo_社員名.SelectedValue) & "'"
Case "職場2"
View.RowFilter = "入力日 =#" & SelectDay & "# AND 職場ID ='" & CInt(Me.cbo_在籍職場.SelectedValue) & "'"
Case "仕事"
View.RowFilter = "入力日 =#" & SelectDay & "# AND 仕事内容ID ='" & CInt(Me.cbo_仕事内容.SelectedValue) & "'"
Case Else
View.RowFilter = "入力日 =#" & SelectDay & "# AND 仕事内容ID ='" & CInt(Me.cbo_仕事内容.SelectedValue) & "' AND 社員ID ='" & CInt(Me.cbo_社員名.SelectedValue) & "'"
End Select
Table.Dispose()
End If
End If
Next
End If
Next
End If
Next
End Sub
Refreshも試してみましたがダメでした。
Filter実行時の再描画の良い方法はありませんか?
よろしくお願いいたします。