I'm trying to filter two different (Data Picker's) that are in the same column at the grid. I try to reach a command with these two fields. The whole filtering process is going on in the code behind, and so far it is working for the other fields in the grid. But for one I'm getting a strange exception:
{"The argument types 'Edm.DateTime' and 'Edm.String' are incompatible for this operation. Near greater than or equals expression, line 6, column 15."}
In the DB the field is a datetime and it is a single column
My code :
<telerik:GridBoundColumn DataField="EntryDate" DataType="System.DateTime" DataFormatString="{0:dd/MM/yyyy}" FilterControlAltText="Filter EntryDate column"
HeaderText="Date" SortExpression="EntryDate" UniqueName="EntryDate" FilterControlWidth="50px">
<FilterTemplate>
From
<telerik:RadDatePicker ID="FromOrderDatePicker" runat="server" Width="100px" AutoPostBack="true"
OnSelectedDateChanged="FromOrderDatePicker_SelectedDateChanged" OnPreRender="FromOrderDatePicker_PreRender" />
to
<telerik:RadDatePicker ID="ToOrderDatePicker" runat="server" Width="100px" AutoPostBack="true"
OnSelectedDateChanged="ToOrderDatePicker_SelectedDateChanged" OnPreRender="ToOrderDatePicker_PreRender" />
</FilterTemplate>
</telerik:GridBoundColumn>
Code behind:
protected void FromOrderDatePicker_SelectedDateChanged(object sender, Telerik.Web.UI.Calendar.SelectedDateChangedEventArgs e)
{
RadDatePicker picker = sender as RadDatePicker;
ViewState["FromDatePicker"] = DateTimeToString(picker.SelectedDate.Value);
ExpressionChanged();
}
protected void FromOrderDatePicker_PreRender(object sender, EventArgs e)
{
if (ViewState["FromDatePicker"] != null)
{
RadDatePicker picker = sender as RadDatePicker;
picker.SelectedDate = StringToDateTime(ViewState["FromDatePicker"].ToString());
}
}
private string DateTimeToString(DateTime dt)
{
return dt.Month + "/" + dt.Day + "/" + dt.Year;
}
private DateTime StringToDateTime(string s)
{
string[] dts = s.Split('/');
DateTime dt = new DateTime(Int32.Parse(dts[2]), Int32.Parse(dts[0]), Int32.Parse(dts[1]));
return dt;
}
It would be just redundant to post the code (for the toDatePicker)
private void ExpressionChanged()
{
//reset
TimeReportGrid.MasterTableView.FilterExpression = null;
TimeReportGrid.MasterTableView.Rebind();
if (ViewState["FromDatePicker"] != null &&
ViewState["ToDatePicker"] != null &&
ViewState["FromDatePicker"].ToString() != "" &&
ViewState["ToDatePicker"].ToString() != "")
{
TimeReportGrid.MasterTableView.FilterExpression += "(it.EntryDate >= '" + ViewState["FromDatePicker"].ToString() + "') AND (it.EntryDate <= '" + ViewState["ToDatePicker"].ToString() + "')";
}
feel free to ask if there is any problem
Thanks for help and fast answer !