Grid Telerik网格过滤器在日期列上不工作
我有一个Telerik网格,其中一列有日期时间值,但该字段上的过滤器不起作用,因为过滤器默认只接受日期。 我们有没有办法将时间包含在telerik网格过滤器中 这是我的密码: Html.Telerik().Grid()Grid Telerik网格过滤器在日期列上不工作,grid,telerik,Grid,Telerik,我有一个Telerik网格,其中一列有日期时间值,但该字段上的过滤器不起作用,因为过滤器默认只接受日期。 我们有没有办法将时间包含在telerik网格过滤器中 这是我的密码: Html.Telerik().Grid() 我知道这是一个老帖子,但我会为那些搜索它的人提供一个解决方案 我已经定制了这个解决方案,它适用于所有场景,如果您有多个列,您也可以使用它。如果您有一个日期时间过滤器,请在需要数据源事件中使用此功能 首先把这个函数放在代码中 Protected Sub manageDateFi
我知道这是一个老帖子,但我会为那些搜索它的人提供一个解决方案 我已经定制了这个解决方案,它适用于所有场景,如果您有多个列,您也可以使用它。如果您有一个日期时间过滤器,请在需要数据源事件中使用此功能 首先把这个函数放在代码中
Protected Sub manageDateFilter(ByVal columnName As String, ByVal source As Object, ByVal filter As String, ByVal columnindex As Integer)
Select Case DirectCast(DirectCast(source, Telerik.Web.UI.RadGrid).Columns.Item(columnindex), Telerik.Web.UI.GridDateTimeColumn).CurrentFilterFunction
Case GridKnownFunction.EqualTo
Dim date1 As datetime = convert.todatetime(DirectCast(DirectCast(source, Telerik.Web.UI.RadGrid).Columns.Item(columnindex), Telerik.Web.UI.GridDateTimeColumn).CurrentFilterValue)
grdReport.MasterTableView.FilterExpression = filter.replace("([" + columnName + "] = " + filter.substring(filter.indexof(columnName) + (columnName.length + 4)).trim().substring(0, filter.substring(filter.indexof(columnName) + (columnName.length + 4)).indexof("M") + 2) + ")".trim(), "([" + columnName + "] >= '" + date1.tostring() + "') AND ([" + columnName + "] < '" + date1.adddays(1).tostring() + "')")
Case GridKnownFunction.NotEqualTo
Dim date1 As datetime = convert.todatetime(DirectCast(DirectCast(source, Telerik.Web.UI.RadGrid).Columns.Item(columnindex), Telerik.Web.UI.GridDateTimeColumn).CurrentFilterValue)
grdReport.MasterTableView.FilterExpression = filter.replace("([" + columnName + "] <> " + filter.substring(filter.indexof(columnName) + (columnName.length + 4)).trim().substring(0, filter.substring(filter.indexof(columnName) + (columnName.length + 5)).indexof("M") + 2) + ")".trim(), "(([" + columnName + "] < '" + date1.tostring() + "') OR ([" + columnName + "] >= '" + date1.adddays(1).tostring() + "'))")
Case GridKnownFunction.GreaterThanOrEqualTo
Dim date1 As datetime = convert.todatetime(DirectCast(DirectCast(source, Telerik.Web.UI.RadGrid).Columns.Item(columnindex), Telerik.Web.UI.GridDateTimeColumn).CurrentFilterValue)
grdReport.MasterTableView.FilterExpression = filter.replace("([" + columnName + "] >= " + filter.substring(filter.indexof(columnName) + (columnName.length + 4)).trim().substring(0, filter.substring(filter.indexof(columnName) + (columnName.length + 4)).indexof("M") + 2) + ")".trim(), "([" + columnName + "] >= '" + date1.tostring() + "')")
Case GridKnownFunction.LessThanOrEqualTo
Dim date1 As datetime = convert.todatetime(DirectCast(DirectCast(source, Telerik.Web.UI.RadGrid).Columns.Item(columnindex), Telerik.Web.UI.GridDateTimeColumn).CurrentFilterValue)
grdReport.MasterTableView.FilterExpression = filter.replace("([" + columnName + "] <= " + filter.substring(filter.indexof(columnName) + (columnName.length + 4)).trim().substring(0, filter.substring(filter.indexof(columnName) + (columnName.length + 5)).indexof("M") + 2) + ")".trim(), "([" + columnName + "] <= '" + date1.adddays(1).tostring() + "') ")
Case GridKnownFunction.GreaterThan
Dim date1 As datetime = convert.todatetime(DirectCast(DirectCast(source, Telerik.Web.UI.RadGrid).Columns.Item(columnindex), Telerik.Web.UI.GridDateTimeColumn).CurrentFilterValue)
grdReport.MasterTableView.FilterExpression = filter.replace("([" + columnName + "] > " + filter.substring(filter.indexof(columnName) + (columnName.length + 4)).trim().substring(0, filter.substring(filter.indexof(columnName) + (columnName.length + 4)).indexof("M") + 2) + ")".trim(), "([" + columnName + "] >= '" + date1.adddays(1).tostring() + "') ")
End Select
对于“多日期”列,您可以这样使用它
Dim filter As String = ReportGrid.MasterTableView.FilterExpression
If (filter.contains("START_DATE")) Then
manageDateFilter("START_DATE", source, filter, 5)
End If
filter = ReportGrid.MasterTableView.FilterExpression
If (filter.contains("END_DATE")) Then
manageDateFilter("END_DATE", source, filter, 6)
End If
享受:)您将不得不覆盖过滤器表达式,Telerik在其文档中提供了一个示例,确切地说明了您要查找的内容:
Dim filter As String = grdReport.MasterTableView.FilterExpression
If (filter.contains("LAST_UPD_DATE")) Then
manageDateFilter("LAST_UPD_DATE", source, filter, 6)
End If
Dim filter As String = ReportGrid.MasterTableView.FilterExpression
If (filter.contains("START_DATE")) Then
manageDateFilter("START_DATE", source, filter, 5)
End If
filter = ReportGrid.MasterTableView.FilterExpression
If (filter.contains("END_DATE")) Then
manageDateFilter("END_DATE", source, filter, 6)
End If
protected void ItemsRadGrid_ItemCommand(object source, GridCommandEventArgs e)
{
if (e.CommandName == RadGrid.FilterCommandName)
{
try
{
FillItemsGrid();
FilterByDate(ItemsRadGrid, e);
}
catch (Exception ex)
{
//ExceptionLogClass.InsertError(ex);
}
}
}
public static void FilterByDate(RadGrid grid, GridCommandEventArgs e)
{
Pair filterPair = e.CommandArgument as Pair;
string columnName = Convert.ToString(filterPair.Second);
if (filterPair.First.ToString() == "NoFilter")
{ }
else
{
if (grid.Columns.FindByDataField(columnName).DataType.Name == "DateTime")
{
try
{
TextBox FilterColumnField = ((TextBox)((GridFilteringItem)e.Item)[columnName].Controls[0]);
string oldDate = FilterColumnField.Text;
FilterColumnField.Text = DateTime.ParseExact(FilterColumnField.Text, "dd.MM.yyyy", CultureInfo.InvariantCulture).ToString("MM/dd/yyyy 12:00:00 tt");
}
catch (FormatException)
{
e.Canceled = true;
}
}
}
}