Using RadControls I believe.
We have a DateTimePicker and need to do custom filtering on Date only.
I have implemented the code on the ItemCommand event and then I filter a dataset and then finally set the datasource to the grid and bind. I know there are results in there but the grid shows "no results"
any ideas?
Code:
I know dvFilter.ToTable() at this point shows me say 5 rows filtered but when the grid is displayed, it shows no results.
what am I doing wrong? How else can I show the filtered results? I am trying to fix lack of support on the control which does not filter datetime values with date only specified hence the customisation above.
We have a DateTimePicker and need to do custom filtering on Date only.
I have implemented the code on the ItemCommand event and then I filter a dataset and then finally set the datasource to the grid and bind. I know there are results in there but the grid shows "no results"
any ideas?
<
telerik:GridDateTimeColumn
FilterControlWidth
=
"60px"
AllowFiltering
=
"true"
AutoPostBackOnFilter
=
"false"
CurrentFilterFunction
=
"Contains"
HeaderStyle-HorizontalAlign
=
"Center"
DataField
=
"DateTime"
HeaderText
=
"Date"
SortExpression
=
"DateTime"
ShowFilterIcon
=
"true"
UniqueName
=
"DateTime"
PickerType
=
"DatePicker"
DataFormatString
=
"{0:g}"
DataType
=
"System.DateTime"
>
<
HeaderStyle
Width
=
"100px"
HorizontalAlign
=
"center"
></
HeaderStyle
>
<
ItemStyle
HorizontalAlign
=
"center"
Width
=
"100px"
></
ItemStyle
>
</
telerik:GridDateTimeColumn
>
Code:
Protected Sub grdShiftObservation_OnItemCommand(ByVal sender As Object, ByVal e As Telerik.Web.UI.GridCommandEventArgs) Handles grdShiftObservation.ItemCommand
If e.CommandName = RadGrid.FilterCommandName Then
Dim filterPair As Pair = DirectCast(e.CommandArgument, Pair)
Select Case filterPair.Second.ToString()
Case "DateTime"
Dim filterOption As String = CType(e.CommandArgument, Pair).First
Dim filterItem As GridFilteringItem = CType(e.Item, GridFilteringItem)
Dim currentPattern As String = CType(filterItem(CType(e.CommandArgument, Pair).Second).Controls(0), RadDatePicker).SelectedDate
If Not String.IsNullOrEmpty(currentPattern) Then
Dim dt As DateTime = Convert.ToDateTime(currentPattern)
Dim dtFromString As String = dt.ToString("MM/dd/yyyy") & " 00:00:00" ' i.e the date they selected in the picker
Dim dtToString As String = dt.AddDays(1).ToString("MM/dd/yyyy") & " 00:00:00"
Dim filterPatternAssist As String = String.Empty
Dim dateColumn As GridBoundColumn = CType(e.Item.OwnerTableView.GetColumnSafe("DateTime"), GridBoundColumn)
Select Case filterOption
Case "EqualTo"
dtFromString = "DateTime >= #" & dtFromString & "# AND DateTime < #" & dtToString & "#"
dateColumn.CurrentFilterFunction = GridKnownFunction.EqualTo
Case "NotEqualTo"
dtFromString = "Not DateTime = #" & dtFromString & "#"
dateColumn.CurrentFilterFunction = GridKnownFunction.NotEqualTo
Case "GreaterThan"
dtFromString = "DateTime > #" & dtFromString & "#"
dateColumn.CurrentFilterFunction = GridKnownFunction.GreaterThan
Case "LessThan"
dtFromString = "DateTime < #" & dtFromString & "#"
dateColumn.CurrentFilterFunction = GridKnownFunction.LessThan
Case "GreaterThanOrEqualTo"
dtFromString = "DateTime >= #" & dtFromString & "#"
dateColumn.CurrentFilterFunction = GridKnownFunction.GreaterThanOrEqualTo
Case "LessThanOrEqualTo"
dtFromString = "DateTime <= #" & dtFromString & "#"
dateColumn.CurrentFilterFunction = GridKnownFunction.LessThanOrEqualTo
Case "Between"
dtFromString = "#" & dtFromString & "' <= DateTime AND DateTime <= #" & filterPatternAssist & "#"
dateColumn.CurrentFilterFunction = GridKnownFunction.Between
Case "NoFilter"
dtFromString = String.Empty
dateColumn.CurrentFilterFunction = GridKnownFunction.NoFilter
Case "NotBetween"
dtFromString = "DateTime <= #" & dtFromString & "' OR DateTime >= #" & filterPatternAssist & "#"
dateColumn.CurrentFilterFunction = GridKnownFunction.NotBetween
Case "IsNull"
Case "NotIsNull"
Case "Contains"
dtFromString = String.Empty
dateColumn.CurrentFilterFunction = GridKnownFunction.NoFilter
End Select
FilterGrid(dtFromString)
End If
End Select
End If
End Sub
Private Sub FilterGrid(ByVal strFilter As String)
Dim ds As DataSet = GetData()
Dim dvFilter As DataView = ds.Tables(0).DefaultView
dvFilter.RowFilter = strFilter
grdShiftObservation.DataSource = dvFilter.ToTable()
grdShiftObservation.DataBind()
End Sub
I know dvFilter.ToTable() at this point shows me say 5 rows filtered but when the grid is displayed, it shows no results.
what am I doing wrong? How else can I show the filtered results? I am trying to fix lack of support on the control which does not filter datetime values with date only specified hence the customisation above.