I hate to bring this question to you but I don't understand your RadGrid filtering example and have coded it the best I can. It is a simple example that has a DataTable loaded as the grid datasource on page load. Now the both the ASPX and the ASPX.CS code is below:
ASPX.CS
public partial class AdminSearch : System.Web.UI.Page
{
public static ArrayList LocationArray;
public DataTable myDataTable = new DataTable();
SqlDataSource sqlDS = new SqlDataSource();
protected void Page_Load(object sender, EventArgs e)
{
SearchGrid.DataSource = GetDataTable();
}
public DataTable GetDataTable()
{
myDataTable.Columns.Add(new DataColumn("KMLID", typeof(string)));
myDataTable.Columns.Add(new DataColumn("Remarks", typeof(string)));
myDataTable.Columns.Add(new DataColumn("LONGITUDE", typeof(string)));
myDataTable.Columns.Add(new DataColumn("LATITUDE", typeof(string)));
myDataTable.Columns.Add(new DataColumn("Pax", typeof(string)));
myDataTable.Columns.Add(new DataColumn("StartDate", typeof(string)));
myDataTable.Columns.Add(new DataColumn("EndDate", typeof(string)));
myDataTable.Columns.Add(new DataColumn("Type", typeof(string)));
DataRow workRow;
bool bsuccess = CacheManager.Get<ArrayList>("LocationArray", out LocationArray);
foreach (Marker m in LocationArray)
{
workRow = myDataTable.NewRow();
workRow["KMLID"] = m.KMLID;
workRow["Remarks"] = m.Remarks;
workRow["LONGITUDE"] = m.LONGITUDE;
workRow["LATITUDE"] = m.LATITUDE;
workRow["Pax"] = m.Pax;
workRow["StartDate"] = m.StartDate.ToString();
workRow["EndDate"] = m.EndDate.ToString();
if (m.Type == "Operations")
{
workRow["Type"] = m.Type;
}
else
{
workRow["Type"] = m.Type;
}
myDataTable.Rows.Add(workRow);
}
return myDataTable;
}
protected void SearchGrid_PreRender(object sender, System.EventArgs e)
{
if (SearchGrid.MasterTableView.FilterExpression != string.Empty)
{
SearchGrid.DataSource = GetDataTable();
}
}
protected void SearchGrid_ItemCommand(object source, GridCommandEventArgs e)
{
myDataTable.Clear();
if (e.CommandName == RadGrid.FilterCommandName)
{
Pair filterPair = (Pair)e.CommandArgument;
switch (filterPair.Second.ToString())
{
case "StartDate":
this.startDate = ((e.Item as GridFilteringItem)[filterPair.Second.ToString()].FindControl("StartDatePicker") as RadDatePicker).SelectedDate;
this.endDate = ((e.Item as GridFilteringItem)[filterPair.Second.ToString()].FindControl("StartDatePicker") as RadDatePicker).SelectedDate;
break;
default:
break;
}
}
}
protected DateTime? SetStartDate(GridItem item)
{
if (item.OwnerTableView.GetColumn("StartDate").CurrentFilterValue == string.Empty)
{
return new DateTime?();
}
else
{
return DateTime.Parse(item.OwnerTableView.GetColumn("StartDate").CurrentFilterValue);
}
}
protected DateTime? startDate
{
set
{
ViewState["strD"] = value;
}
get
{
if (ViewState["strD"] != null)
return (DateTime)ViewState["strD"];
else
return new DateTime(2019, 7, 4);
}
}
protected DateTime? endDate
{
set
{
ViewState["endD"] = value;
}
get
{
if (ViewState["endD"] != null)
return (DateTime)ViewState["endD"];
else
return new DateTime(2019, 5, 6);
}
}
}
ASPX
<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="AdminSearch.aspx.cs" Inherits="COPASPApplication.AdminSearch" %>
<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server">
<div>
<span style="align-content:end; font-size:12px;"><asp:LinkButton runat="server" PostBackUrl="COPAdminView.aspx">Administrative User Page</asp:LinkButton></span>
<h3>Administrative Search Page</h3>
</div>
<telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" runat="server" />
<div class="demo-container no-bg">
<telerik:RadGrid RenderMode="Lightweight" ID="SearchGrid" Width="100%" AllowFilteringByColumn="True"
AllowSorting="True" AllowPaging="True" PageSize="7" runat="server" AutoGenerateColumns="False"
EnableLinqExpressions="false" OnItemCommand="SearchGrid_ItemCommand" ShowStatusBar="true">
<MasterTableView DataKeyNames="KMLID" TableLayout="Fixed">
<Columns>
<telerik:GridBoundColumn DataField="KMLID" HeaderText="KMLID" UniqueName="KMLID"
HeaderStyle-Width="25px" SortExpression="KMLID">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="Remarks" HeaderText="Remarks" UniqueName="Remarks"
HeaderStyle-Width="100px" SortExpression="Remarks">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="LONGITUDE" HeaderText="LONGITUDE" UniqueName="LONGITUDE"
HeaderStyle-Width="80px" SortExpression="LONGITUDE">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="LATITUDE" HeaderText="LATITUDE" UniqueName="LATITUDE"
HeaderStyle-Width="80px" SortExpression="LATITUDE">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="Pax" HeaderText="Pax" UniqueName="Pax"
HeaderStyle-Width="25px" SortExpression="Pax" >
</telerik:GridBoundColumn>
<telerik:GridBoundColumn UniqueName="StartDate" DataField="StartDate" HeaderText="Start date"
DataFormatString="{0:D}" HeaderStyle-Width="90px">
<FilterTemplate>
<telerik:RadDatePicker RenderMode="Lightweight" ID="StartDatePicker" runat="server" Width="110px" ClientEvents-OnDateSelected="StartDateSelected"
MinDate="01-01-2019" MaxDate="05-06-2025" FocusedDate="07-04-1996" />
<telerik:RadScriptBlock ID="RadScriptBlock1" runat="server">
<script type="text/javascript">
function StartDateSelected(sender, args) {
var tableView = $find("<%# ((GridItem)Container).OwnerTableView.ClientID %>");
var startDate = $find('<%# ((GridItem)Container).FindControl("StartDatePicker").ClientID %>');
var startDate = FormatSelectedDate(sender);
tableView.filter("StartDate", startDate, "EqualTo");
}
function FormatSelectedDate(picker) {
var date = picker.get_selectedDate();
var dateInput = picker.get_dateInput();
var formattedDate = dateInput.get_dateFormatInfo().FormatDate(date, dateInput.get_displayDateFormat());
return formattedDate;
}
</script>
</telerik:RadScriptBlock>
</FilterTemplate>
</telerik:GridBoundColumn>
<telerik:GridBoundColumn UniqueName="EndDate" DataField="EndDate" HeaderText="EndDate"
DataFormatString="{0:d}" HeaderStyle-Width="80px">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="Type" HeaderText="Type" UniqueName="Type"
HeaderStyle-Width="80px" SortExpression="Type">
</telerik:GridBoundColumn>
</Columns>
</MasterTableView>
</telerik:RadGrid>
</div>
</asp:Content>