Hi,
I am having a radgrid with a Date field in dd/MM/yyyy format as per your site’s codes. I am having problem with filtering with Date-field in the grid, where I am getting an error on “filterItem.OwnerTableView.Rebind(); , saying “Telerik.Web.UI.ParseException: Expression expected”. My code is as follows
Any idea , where I am wrong?
===================================
<telerik:RadGrid ID="grdActionList" Skin="WebBlue"
runat="server" GridLines="None"
AutoGenerateColumns="False"
AllowSorting="True"
AllowFilteringByColumn = "true"
AllowPaging="True" PageSize="10"
OnNeedDataSource="grdActionList_NeedDataSource"
OnItemCommand="grdActionList_ItemCommand">
<PagerStyle Mode="NextPrevAndNumeric"></PagerStyle>
<MasterTableView DataKeyNames="Action_Id" CommandItemDisplay="Top" EditMode="PopUp">
<CommandItemSettings ShowAddNewRecordButton="false"/>
<EditFormSettings PopUpSettings-Modal="true" />
<Columns>
<telerik:GridBoundColumn DataField="Action_Id" DataType="System.Int32"
HeaderText="Action_Id" ReadOnly="True" SortExpression="Action_Id"
UniqueName="Action_Id" Visible="false" >
</telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="Status" DataType="System.Int32" Visible="false"
UniqueName="Status" ReadOnly="true">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="Content_Id" DataType="System.Int32"
HeaderText="Content_Id" SortExpression="Content_Id"
UniqueName="Content_Id" ReadOnly="true" Visible="false">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="Create_Date" DataFormatString="{0:dd/MM/yyyy}"
HeaderText="Created On" SortExpression="Create_Date" ItemStyle-Width="150"
UniqueName="Create_Date" ReadOnly="true">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="JOMC_ID"
HeaderText="Unique Id" SortExpression="JOMC_ID" ItemStyle-Width="150"
UniqueName="JOMC_ID" ReadOnly="true">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="Module_Content_Text"
HeaderText="Action name" SortExpression="Module_Content_Text"
UniqueName="Module_Content_Text" ItemStyle-Width="450">
</telerik:GridBoundColumn>
</Columns>
</MasterTableView>
<ClientSettings EnableRowHoverStyle="true"></ClientSettings>
</telerik:RadGrid>
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
displayActionGrid();
}
}
protected void grdActionList_ItemCommand(object source, Telerik.Web.UI.GridCommandEventArgs e)
{
#region --------------Filtering-------------------------------
if ((e.CommandName == RadGrid.FilterCommandName ) && (((Pair)e.CommandArgument).Second.ToString() == "Create_Date") &&
(((Pair)e.CommandArgument).First.ToString() != "NoFilter"))
{
e.Canceled = true;
GridFilteringItem filterItem = (GridFilteringItem)e.Item;
//string currentPattern = (TextBox)filterItem(((Pair)e.CommandArgument).Second).Controls(0).Text;
//string currentPattern = "{0:dd/MM/yyyy}";
string currentPattern = "dd/MM/yyyy";
string filterPattern = "";
string filterPatternAssist= "";
//char sep = "a";
if (currentPattern.IndexOf(" ") != -1)
{
currentPattern = currentPattern.Replace(" ", "/");
}
string[] vals = currentPattern.Split('/');
string filterOption = Convert.ToString(((Pair)e.CommandArgument).First);
if (filterOption != "IsNull" && filterOption != "NotIsNull")
{
if (vals.Length > 3)
{
filterPatternAssist = vals[4] + "/" + vals[3] + "/" + vals[5];
}
filterPattern = vals[1] + "/" + vals[0] + "/" + vals[2];
}
GridBoundColumn dateColumn = (GridBoundColumn)e.Item.OwnerTableView.GetColumnSafe( "Create_Date");
switch(filterOption)
{
case "EqualTo":
filterPattern = "[Create_Date] = '" + filterPattern + "'";
dateColumn.CurrentFilterFunction = GridKnownFunction.EqualTo;
break;
case "NotEqualTo":
filterPattern = "Not [Create_Date] = '" + filterPattern + "'";
dateColumn.CurrentFilterFunction = GridKnownFunction.NotEqualTo;
break;
case "GreaterThan":
filterPattern = "[Create_Date] > '" + filterPattern + "'";
dateColumn.CurrentFilterFunction = GridKnownFunction.GreaterThan;
break;
case "LessThan":
filterPattern = "[Create_Date] < '" + filterPattern + "'";
dateColumn.CurrentFilterFunction = GridKnownFunction.LessThan;
break;
case "GreaterThanOrEqualTo":
filterPattern = "[Create_Date] >= '" + filterPattern + "'";
dateColumn.CurrentFilterFunction = GridKnownFunction.GreaterThanOrEqualTo;
break;
case "LessThanOrEqualTo":
filterPattern = "[Create_Date] <= '" + filterPattern + "'";
dateColumn.CurrentFilterFunction = GridKnownFunction.LessThanOrEqualTo;
break;
case "Between":
filterPattern = "'" + filterPattern + "' <= [Create_Date] AND [Create_Date] <= '" + filterPatternAssist + "'";
dateColumn.CurrentFilterFunction = GridKnownFunction.Between;
break;
case "NotBetween":
filterPattern = "[Create_Date] <= '" + filterPattern + "' OR [Create_Date] >= '" + filterPatternAssist + "'";
dateColumn.CurrentFilterFunction = GridKnownFunction.NotBetween;
break;
case "IsNull":
break;
case "NotIsNull":
break;
}
foreach (GridColumn column in grdActionList.MasterTableView.Columns)
{
if (column.UniqueName != "Create_Date")
{
column.CurrentFilterFunction = GridKnownFunction.NoFilter;
column.CurrentFilterValue = string.Empty;
}
}
Session["filterPattern"] = filterPattern;
dateColumn.CurrentFilterValue = currentPattern;
filterItem.OwnerTableView.Rebind();
}
//Add more conditional checks for commands here if necessary
else if (e.CommandName != RadGrid.SortCommandName && e.CommandName != RadGrid.PageCommandName)
{
Session["filterPattern"] = null;
GridBoundColumn dateColumn = (GridBoundColumn)e.Item.OwnerTableView.GetColumnSafe( "Create_Date");
dateColumn.CurrentFilterFunction = GridKnownFunction.NoFilter;
dateColumn.CurrentFilterValue = string.Empty;
}
#endregion
}
#region Radgrid integration
private void displayActionGrid()
{
JOMCMiddleWare.BL.Actions oAction = new JOMCMiddleWare.BL.Actions();
DataTable dt = new DataTable();
oAction._Company_Id = System.Convert.ToInt32(Session[JOMCSession.__Session_Company_Id]);
oAction._Language_Id = System.Convert.ToInt32(Session[JOMCSession.__Session_Lanuage_Id]);
dt = oAction.GetDataAllAction();
grdActionList.DataSource = dt;
grdActionList.DataBind();
}
private DataTable GridSource
{
get
{
JOMCMiddleWare.BL.Actions oAction = new JOMCMiddleWare.BL.Actions();
DataTable dt = new DataTable();
oAction._Company_Id = System.Convert.ToInt32(Session[JOMCSession.__Session_Company_Id]);
oAction._Language_Id = System.Convert.ToInt32(Session[JOMCSession.__Session_Lanuage_Id]);
dt = oAction.GetDataAllAction();
return dt;
}
}
protected void grdActionList_NeedDataSource(object source, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
{
grdActionList.DataSource = this.GridSource;
//----------MS------26-10-------------
if (Session["filterPattern"] != null)
{
grdActionList.MasterTableView.FilterExpression = (string)Session["filterPattern"];
}
//----------ME------------------
}
#endregion
Thanks!!