投稿者 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実行時の再描画の良い方法はありませんか?

よろしくお願いいたします。