0

m_DeletedItemsDTというDataTableを使用してSQLServerDBからのデータを表示するdatagridviewコントロールがあります。

グリッドの上に2つのdatatimepickerコントロールがあるので、ユーザーは開始日と終了日を選択してから、cmdFilterDataをクリックします。これにより、データベースからフィルター処理されたデータセットが取得され、以下のクエリを使用してグリッドが更新されます。

"SELECT * FROM ReturnUnpaidData_Audit WHERE [AuditDateTime]<='" & Me.dtpEndDate.Value.ToString("yyyy-MM-dd") & "' AND [AuditDateTime]>='" & Me.dtpStartDate.Value.ToString("yyyy-MM-dd") & "'"

私が望んでいるのは、データベースへの別のラウンドトリップではなく、グリッド上、またはm_DeletedItemsDTと呼ばれ、フォーム/クラスレベルで宣言されたデータテーブル上でフィルタリングを実行することです。

WinFormsのTextBoxに入力されたテキストを使用してFilterDataGridView を確認しようとしましたが、実際には必要なものではありません。

4

1 に答える 1

1

私は少し試行錯誤してそれを解決しました:

Dim dv As New System.Data.DataView

dv.Table = m_DeletedItemsDT
' "Server like '%" + textBox1.Text + "%'";
dv.RowFilter = "[AuditDateTime]<='" & Me.dtpEndDate.Value.ToString("yyyy-MM-dd") & "' AND [AuditDateTime]>='" & Me.dtpStartDate.Value.ToString("yyyy-MM-dd") & "'"
dgvDeletedRecords.DataSource = dv

cmdClearFilterボタンが発生した場合は、以下を実行します。

    Dim dv As New System.Data.DataView

    Me.chkAUtoDates.Checked = False
    '        Call m_GetData()
    With dv
        .Table = m_DeletedItemsDT
        .RowFilter = ""
    End With

    dgvDeletedRecords.DataSource = dv

フィリップ

于 2013-03-15T14:34:00.457 に答える