2015-02-06 9 views
0

나는이 같은 날짜 2015년 2월 4일 (2 월 4-2015) 내가 입력 할 때이 코드날짜와 시간

Private Sub RowFilter(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtUser.TextChanged, dtpEnd.ValueChanged, dtpStart.ValueChanged 
    Dim dv As New DataView(dtAudit) 
    dv.RowFilter = String.Format("`{0}` Like '%{1}%'", dgAudit.Columns(2).Name, txtUser.Text) 
    dgAudit.DataSource = dv 
    Dim newDV As New DataView(dv.ToTable) 
    newDV.RowFilter = String.Format("`{0}` >= #{1}# and `{0}` <= #{2}#", dgAudit.Columns(5).Name, Format(dtpStart.Value, "dd/MM/yyyy"), Format(dtpEnd.Value, "dd/MM/yyyy")) 
    dgAudit.DataSource = newDV 

End Sub 
내가이

를 사용 dtpEnd을 날짜 시간 열을 필터링하기 위해 노력하고있어 필터링하는 방법/3/2015에 여전히 날짜가 표시됩니다. 2015 년 2 월 3 일에 dtpStart에 날짜를 입력하지 않으면 1 일 또는 그 이상을 추가하는 것과 같습니다. 이 문제를 어떻게 해결할 수 있습니까?

+0

이 됩니다이 칼럼의 이름이 "날짜와 시간"입니다 생성합니다. 그래서 나는 칼럼을 식별 할 필요가있다. #은 날짜 형식을 식별하는 데 사용됩니다. – IWantToLearn

답변

0

VB 리터럴과 마찬가지로 날짜도 #M/dd/yyyy# 형식이어야합니다. 이 작업을 수행하는 적절한 방법은 단순히 결합하는 것입니다 하나 만 그리드에 DataTable 및과 같이 한 줄에 필터링 :

Dim table = DirectCast(dgAudit.DataSource, DataTable) 
Dim textColumn = dgAudit.Columns(2).Name 
Dim dateColumn = dgAudit.Columns(5).Name 

table.DefaultView.RowFilter = String.Format("[{0}] = '%{1}%' AND [{2}] >= #{3:M/dd/yyyy}# AND [{2}] <= #{4:M/dd/yyyy}#", 
              textColumn, 
              txtUser.Text, 
              dateColumn, 
              dtpStart.Value, 
              dtpEnd.Value)