I read a lot of this topic, but now I have an error when add other filter on grid.
this is my scenario
steps:
1- filter by date --> filter is OK.
2- filter by date, filter by colum x--> filter does not work because lost custom date filter.
This is my code:
public static void FilterDateTimes(RadGrid grid, GridCommandEventArgs e, string columnName, string actionFilter)
{
e.Canceled = true;
var dateColumn = (GridBoundColumn)e.Item.OwnerTableView.GetColumnSafe(columnName);
string newFilter;
switch (actionFilter)
{
case "NoFilter":
string removeFilter;
if (HttpContext.Current.Session["equalTo"] != null)
{
removeFilter = HttpContext.Current.Session["equalTo"].ToString();
if (grid.MasterTableView.FilterExpression.Contains("AND" + removeFilter))
grid.MasterTableView.FilterExpression =
grid.MasterTableView.FilterExpression.Replace("AND" + removeFilter, "");
if (grid.MasterTableView.FilterExpression.Contains(removeFilter))
grid.MasterTableView.FilterExpression =
grid.MasterTableView.FilterExpression.Replace(removeFilter, "");
}
if (HttpContext.Current.Session["NoEqualTo"] != null)
{
removeFilter = HttpContext.Current.Session["NoEqualTo"].ToString();
if (grid.MasterTableView.FilterExpression.Contains("AND" + removeFilter))
grid.MasterTableView.FilterExpression =
grid.MasterTableView.FilterExpression.Replace("AND" + removeFilter, "");
if (grid.MasterTableView.FilterExpression.Contains(removeFilter))
grid.MasterTableView.FilterExpression =
grid.MasterTableView.FilterExpression.Replace(removeFilter, "");
}
dateColumn.CurrentFilterFunction = GridKnownFunction.NoFilter;
dateColumn.CurrentFilterValue = null;
break;
case "EqualTo":
var dt =
((RadDateInput)
((GridFilteringItem)e.Item)[Convert.ToString(columnName)].Controls[1])
;
if (dt.Text == null) return ;
DateTime date = Convert.ToDateTime(dt.SelectedDate);
DateTime startDate = Convert.ToDateTime(date);
DateTime endDate = Convert.ToDateTime(date).AddDays(1);
newFilter = "('" + startDate.ToString("G") + "' < [Date] AND [Date] < '" +
endDate.ToString("G") + "')";
if (HttpContext.Current.Session["equalTo"] != null)
{
removeFilter = HttpContext.Current.Session["equalTo"].ToString();
if (grid.MasterTableView.FilterExpression.Contains("AND" + removeFilter))
grid.MasterTableView.FilterExpression =
grid.MasterTableView.FilterExpression.Replace("AND" + removeFilter, "");
if (grid.MasterTableView.FilterExpression.Contains(removeFilter))
grid.MasterTableView.FilterExpression =
grid.MasterTableView.FilterExpression.Replace(removeFilter, "");
}
HttpContext.Current.Session["equalTo"] = newFilter;
if (grid.MasterTableView.FilterExpression == "")
{
grid.MasterTableView.FilterExpression = newFilter;
}
else
{
if (HttpContext.Current.Session["NoEqualTo"] != null)
{
removeFilter = HttpContext.Current.Session["NoEqualTo"].ToString();
if (grid.MasterTableView.FilterExpression.Contains("AND" + removeFilter))
grid.MasterTableView.FilterExpression =
grid.MasterTableView.FilterExpression.Replace("AND" + removeFilter, "");
if (grid.MasterTableView.FilterExpression.Contains(removeFilter))
grid.MasterTableView.FilterExpression =
grid.MasterTableView.FilterExpression.Replace(removeFilter, "");
}
if (grid.MasterTableView.FilterExpression == "")
{
grid.MasterTableView.FilterExpression = newFilter;
}
else
{
grid.MasterTableView.FilterExpression += "AND" + newFilter;
}
}
dateColumn.CurrentFilterValue = Convert.ToDateTime(date).ToString("dd/MM/yyyy");
dateColumn.CurrentFilterFunction = GridKnownFunction.EqualTo;
break;
case "NotEqualTo":
dt =
(RadDateInput)
((GridFilteringItem)e.Item)[Convert.ToString(columnName)].Controls[1];
if (dt.Text == null) return ;
date = Convert.ToDateTime(dt.SelectedDate);
startDate = Convert.ToDateTime(date);
endDate = Convert.ToDateTime(date).AddHours(24);
DateTime beforeDate = Convert.ToDateTime(date).AddMinutes(-1);
newFilter = "([Date] <'" + startDate.ToString("G") + "') OR ([Date] >'" + endDate.ToString("G") + "')";
if (HttpContext.Current.Session["NoEqualTo"] != null)
{
removeFilter = HttpContext.Current.Session["NoEqualTo"].ToString();
if (grid.MasterTableView.FilterExpression.Contains("AND" + removeFilter))
grid.MasterTableView.FilterExpression =
grid.MasterTableView.FilterExpression.Replace("AND" + removeFilter, "");
if (grid.MasterTableView.FilterExpression.Contains(removeFilter))
grid.MasterTableView.FilterExpression =
grid.MasterTableView.FilterExpression.Replace(removeFilter, "");
}
HttpContext.Current.Session["NoEqualTo"] = newFilter;
if (grid.MasterTableView.FilterExpression == "")
{
grid.MasterTableView.FilterExpression = newFilter;
}
else
{
if (HttpContext.Current.Session["equalTo"] != null)
{
removeFilter = HttpContext.Current.Session["equalTo"].ToString();
if (grid.MasterTableView.FilterExpression.Contains("AND" + removeFilter))
grid.MasterTableView.FilterExpression =
grid.MasterTableView.FilterExpression.Replace("AND" + removeFilter, "");
if (grid.MasterTableView.FilterExpression.Contains(removeFilter))
grid.MasterTableView.FilterExpression =
grid.MasterTableView.FilterExpression.Replace(removeFilter, "");
}
if (grid.MasterTableView.FilterExpression == "")
{
grid.MasterTableView.FilterExpression = newFilter;
}else
{
grid.MasterTableView.FilterExpression += "AND" + newFilter;
}
}
dateColumn.CurrentFilterFunction = GridKnownFunction.NotEqualTo;
dateColumn.CurrentFilterValue = Convert.ToDateTime(date).ToString("G");
break;
}
}
if (e.CommandName == RadGrid.FilterCommandName)
{
var filterPair = e.CommandArgument as Pair;
string filter = null;
if (gridSearchHistory.MasterTableView.FilterExpression.StartsWith("AND"))
gridSearchHistory.MasterTableView.FilterExpression = gridSearchHistory.MasterTableView.FilterExpression.Remove(0, 3);
if (Convert.ToString(filterPair.Second).Contains("Date"))
{
WebSearch.Components.CommonFunctions.GridFunction.FilterDateTimes(gridSearchHistory, e,
Convert.ToString(filterPair.Second),
Convert.ToString(filterPair.First));
}
LoadDataSource();
}
}
Screen:

I have a lot of records with 03/05/2012 as date
Steps 1:
filter as 03/05/2012 --> OK


Step 2:
Add Result equal to 4.

Does not work correctly.
in code behind Filter said:
[Date] = '03/05/2012 12:00:00 a.m. --> LOST the custom filter
My aspx
<telerik:RadGrid ID="gridSearchHistory" runat="server" AutoGenerateColumns="false" EnableViewState="true"
OnItemCommand="gridSearchHistory_ItemCommand" OnPageIndexChanged="gridSearchHistory_PageIndexChanged"
OnPreRender="gridSearchHistory_PreRender" OnSortCommand="gridSearchHistory_SortCommand" OnPageSizeChanged="gridSearchHistory_PageSizeChanged" >
<MasterTableView DataKeyNames="Id" CommandItemDisplay="None"
TableLayout="Fixed" Width="100%">
<Columns>
<telerik:GridBoundColumn UniqueName="Id" DataField="Id" Visible="false" />
<telerik:GridDateTimeColumn UniqueName="Date" DataField="Date" PickerType="None"
AutoPostBackOnFilter="true" DataType="System.DateTime" />
<telerik:GridBoundColumn UniqueName="Query" DataField="Query" Visible="false" AllowFiltering="false" />
<telerik:GridTemplateColumn UniqueName="QueryLink" SortExpression="Query" AutoPostBackOnFilter="true">
<ItemTemplate>
<asp:LinkButton ID="lnkQuery" runat="server" Text='<%# Eval("Query") %>' OnClick="lnkQuery_Click" />
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridBoundColumn UniqueName="ResultCount" DataField="ResultCount" SortExpression="ResultCount" />
</Columns>
</MasterTableView>
</telerik:RadGrid>
Please I need help
this is my scenario
steps:
1- filter by date --> filter is OK.
2- filter by date, filter by colum x--> filter does not work because lost custom date filter.
This is my code:
public static void FilterDateTimes(RadGrid grid, GridCommandEventArgs e, string columnName, string actionFilter)
{
e.Canceled = true;
var dateColumn = (GridBoundColumn)e.Item.OwnerTableView.GetColumnSafe(columnName);
string newFilter;
switch (actionFilter)
{
case "NoFilter":
string removeFilter;
if (HttpContext.Current.Session["equalTo"] != null)
{
removeFilter = HttpContext.Current.Session["equalTo"].ToString();
if (grid.MasterTableView.FilterExpression.Contains("AND" + removeFilter))
grid.MasterTableView.FilterExpression =
grid.MasterTableView.FilterExpression.Replace("AND" + removeFilter, "");
if (grid.MasterTableView.FilterExpression.Contains(removeFilter))
grid.MasterTableView.FilterExpression =
grid.MasterTableView.FilterExpression.Replace(removeFilter, "");
}
if (HttpContext.Current.Session["NoEqualTo"] != null)
{
removeFilter = HttpContext.Current.Session["NoEqualTo"].ToString();
if (grid.MasterTableView.FilterExpression.Contains("AND" + removeFilter))
grid.MasterTableView.FilterExpression =
grid.MasterTableView.FilterExpression.Replace("AND" + removeFilter, "");
if (grid.MasterTableView.FilterExpression.Contains(removeFilter))
grid.MasterTableView.FilterExpression =
grid.MasterTableView.FilterExpression.Replace(removeFilter, "");
}
dateColumn.CurrentFilterFunction = GridKnownFunction.NoFilter;
dateColumn.CurrentFilterValue = null;
break;
case "EqualTo":
var dt =
((RadDateInput)
((GridFilteringItem)e.Item)[Convert.ToString(columnName)].Controls[1])
;
if (dt.Text == null) return ;
DateTime date = Convert.ToDateTime(dt.SelectedDate);
DateTime startDate = Convert.ToDateTime(date);
DateTime endDate = Convert.ToDateTime(date).AddDays(1);
newFilter = "('" + startDate.ToString("G") + "' < [Date] AND [Date] < '" +
endDate.ToString("G") + "')";
if (HttpContext.Current.Session["equalTo"] != null)
{
removeFilter = HttpContext.Current.Session["equalTo"].ToString();
if (grid.MasterTableView.FilterExpression.Contains("AND" + removeFilter))
grid.MasterTableView.FilterExpression =
grid.MasterTableView.FilterExpression.Replace("AND" + removeFilter, "");
if (grid.MasterTableView.FilterExpression.Contains(removeFilter))
grid.MasterTableView.FilterExpression =
grid.MasterTableView.FilterExpression.Replace(removeFilter, "");
}
HttpContext.Current.Session["equalTo"] = newFilter;
if (grid.MasterTableView.FilterExpression == "")
{
grid.MasterTableView.FilterExpression = newFilter;
}
else
{
if (HttpContext.Current.Session["NoEqualTo"] != null)
{
removeFilter = HttpContext.Current.Session["NoEqualTo"].ToString();
if (grid.MasterTableView.FilterExpression.Contains("AND" + removeFilter))
grid.MasterTableView.FilterExpression =
grid.MasterTableView.FilterExpression.Replace("AND" + removeFilter, "");
if (grid.MasterTableView.FilterExpression.Contains(removeFilter))
grid.MasterTableView.FilterExpression =
grid.MasterTableView.FilterExpression.Replace(removeFilter, "");
}
if (grid.MasterTableView.FilterExpression == "")
{
grid.MasterTableView.FilterExpression = newFilter;
}
else
{
grid.MasterTableView.FilterExpression += "AND" + newFilter;
}
}
dateColumn.CurrentFilterValue = Convert.ToDateTime(date).ToString("dd/MM/yyyy");
dateColumn.CurrentFilterFunction = GridKnownFunction.EqualTo;
break;
case "NotEqualTo":
dt =
(RadDateInput)
((GridFilteringItem)e.Item)[Convert.ToString(columnName)].Controls[1];
if (dt.Text == null) return ;
date = Convert.ToDateTime(dt.SelectedDate);
startDate = Convert.ToDateTime(date);
endDate = Convert.ToDateTime(date).AddHours(24);
DateTime beforeDate = Convert.ToDateTime(date).AddMinutes(-1);
newFilter = "([Date] <'" + startDate.ToString("G") + "') OR ([Date] >'" + endDate.ToString("G") + "')";
if (HttpContext.Current.Session["NoEqualTo"] != null)
{
removeFilter = HttpContext.Current.Session["NoEqualTo"].ToString();
if (grid.MasterTableView.FilterExpression.Contains("AND" + removeFilter))
grid.MasterTableView.FilterExpression =
grid.MasterTableView.FilterExpression.Replace("AND" + removeFilter, "");
if (grid.MasterTableView.FilterExpression.Contains(removeFilter))
grid.MasterTableView.FilterExpression =
grid.MasterTableView.FilterExpression.Replace(removeFilter, "");
}
HttpContext.Current.Session["NoEqualTo"] = newFilter;
if (grid.MasterTableView.FilterExpression == "")
{
grid.MasterTableView.FilterExpression = newFilter;
}
else
{
if (HttpContext.Current.Session["equalTo"] != null)
{
removeFilter = HttpContext.Current.Session["equalTo"].ToString();
if (grid.MasterTableView.FilterExpression.Contains("AND" + removeFilter))
grid.MasterTableView.FilterExpression =
grid.MasterTableView.FilterExpression.Replace("AND" + removeFilter, "");
if (grid.MasterTableView.FilterExpression.Contains(removeFilter))
grid.MasterTableView.FilterExpression =
grid.MasterTableView.FilterExpression.Replace(removeFilter, "");
}
if (grid.MasterTableView.FilterExpression == "")
{
grid.MasterTableView.FilterExpression = newFilter;
}else
{
grid.MasterTableView.FilterExpression += "AND" + newFilter;
}
}
dateColumn.CurrentFilterFunction = GridKnownFunction.NotEqualTo;
dateColumn.CurrentFilterValue = Convert.ToDateTime(date).ToString("G");
break;
}
}
if (e.CommandName == RadGrid.FilterCommandName)
{
var filterPair = e.CommandArgument as Pair;
string filter = null;
if (gridSearchHistory.MasterTableView.FilterExpression.StartsWith("AND"))
gridSearchHistory.MasterTableView.FilterExpression = gridSearchHistory.MasterTableView.FilterExpression.Remove(0, 3);
if (Convert.ToString(filterPair.Second).Contains("Date"))
{
WebSearch.Components.CommonFunctions.GridFunction.FilterDateTimes(gridSearchHistory, e,
Convert.ToString(filterPair.Second),
Convert.ToString(filterPair.First));
}
LoadDataSource();
}
}
Screen:
I have a lot of records with 03/05/2012 as date
Steps 1:
filter as 03/05/2012 --> OK
Step 2:
Add Result equal to 4.
Does not work correctly.
in code behind Filter said:
[Date] = '03/05/2012 12:00:00 a.m. --> LOST the custom filter
My aspx
<telerik:RadGrid ID="gridSearchHistory" runat="server" AutoGenerateColumns="false" EnableViewState="true"
OnItemCommand="gridSearchHistory_ItemCommand" OnPageIndexChanged="gridSearchHistory_PageIndexChanged"
OnPreRender="gridSearchHistory_PreRender" OnSortCommand="gridSearchHistory_SortCommand" OnPageSizeChanged="gridSearchHistory_PageSizeChanged" >
<MasterTableView DataKeyNames="Id" CommandItemDisplay="None"
TableLayout="Fixed" Width="100%">
<Columns>
<telerik:GridBoundColumn UniqueName="Id" DataField="Id" Visible="false" />
<telerik:GridDateTimeColumn UniqueName="Date" DataField="Date" PickerType="None"
AutoPostBackOnFilter="true" DataType="System.DateTime" />
<telerik:GridBoundColumn UniqueName="Query" DataField="Query" Visible="false" AllowFiltering="false" />
<telerik:GridTemplateColumn UniqueName="QueryLink" SortExpression="Query" AutoPostBackOnFilter="true">
<ItemTemplate>
<asp:LinkButton ID="lnkQuery" runat="server" Text='<%# Eval("Query") %>' OnClick="lnkQuery_Click" />
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridBoundColumn UniqueName="ResultCount" DataField="ResultCount" SortExpression="ResultCount" />
</Columns>
</MasterTableView>
</telerik:RadGrid>
Please I need help