Rob Harris
Top achievements
Rank 1
Rob Harris
asked on 01 Jul 2010, 02:57 PM
I have a Windows Forms Telerik report that uses a parameter of type DateTime. When I display the report in the WinForms ReportViewer control the parameter is displayed at the top of the report with the user able to select a date, however the control does not allow them to select a time. How can I get the ReportViewer's Datetime picker to display the date and time?
I'm using version 3.2.9.1211 of Telerik.Reporting dll.
I'm using version 3.2.9.1211 of Telerik.Reporting dll.
7 Answers, 1 is accepted
0
Hi Rob Harris,
All the best,
Peter
the Telerik team
The DateTime Report Parameters UI by default only allows Date picking. Our suggestion in your case would be to create a custom UI for the parameters instead of using the default one. Just set the Report Parameters Visibility to False and add Windows Forms controls that will feed the Report Parameters in code behind, as shown in the following code snippet:
private void button1_Click(object sender, EventArgs e)
{
var report1 = new ClassLibrary1.TestReport();
report1.ReportParameters["Parameter1"].Value = dateTimePicker1.Value;
reportViewer1.Report = report1;
reportViewer1.RefreshReport();
}
Peter
the Telerik team
Do you want to have your say when we set our development plans?
Do you want to know when a feature you care about is added or when a bug fixed?
Explore the
Telerik Public Issue Tracking
system and vote to affect the priority of the items
0
Matt
Top achievements
Rank 1
answered on 28 Feb 2012, 02:50 PM
I can't seem to get this to work where do you place it? I am trying ot evalute if this product will work for us and we will need a datetime paramater for almost every report and we need to be able to pick time and date. when i put in report.cs file the designer blows up.
matthew.majerus@xeta.com
matthew.majerus@xeta.com
0
Rob Harris
Top achievements
Rank 1
answered on 28 Feb 2012, 04:35 PM
You need to add a DateTime picker to the form which launches the report, rather than the report itself. So for example, I have a report called Report1 which has a DateTime parameter. In my launching form (Form1) I create an instance of Report1, assign the selected DateTime to the appropriate parameter (the DateTime value comes from a DateTimePicker also on Form1), and then, in this case, display the report in the Telerik Report Viewer, again on the same form (we could directly print the report at this point too) .
public
partial
class
Form1 : Form
{
public
Form1()
{
InitializeComponent();
}
private
void
button1_Click(
object
sender, EventArgs e)
{
var report =
new
Report1();
report.ReportParameters[
"MyDateParameter"
].Value = dateTimePicker1.Value;
reportViewer1.Report = report;
reportViewer1.RefreshReport();
}
private
void
Form1_Load(
object
sender, EventArgs e)
{
this
.reportViewer1.RefreshReport();
}
}
0
Alex
Top achievements
Rank 1
answered on 06 Mar 2014, 05:31 PM
This is a pretty crappy solution. Only allow date to be selected for DateTIME parameters? Makes zero sense.
0
KS
Top achievements
Rank 1
answered on 06 Mar 2014, 08:31 PM
Hi,
Go for the HTML5 viewer, just switching kendoDatepicket to kendoDateTimepicker and all is working :)
-KS
Go for the HTML5 viewer, just switching kendoDatepicket to kendoDateTimepicker and all is working :)
-KS
0
ajpetersen
Top achievements
Rank 1
answered on 07 Mar 2014, 06:53 PM
I am doing something similar in WPF using MVVM. My issue was when a user selected a date, I needed to filter the results into a begin date and end date, starting at 2:00 pm. I was able to accomplish this by using the WPF datepicker and the code below. My question is how would I achieve this same functionality following the MVVM best practices? I am not sure how I would set and refresh the report source from my view model.
private void DatePicker_SelectedDateChanged(object sender, SelectionChangedEventArgs e)
{
DateTime? date = ReportDatePicker.SelectedDate;
if (rvMain != null && date.HasValue)
{
DateTime beginDate = date.Value.AddHours(-10); //setting range from 2pm to 2pm
DateTime endDate = date.Value.AddHours(14);
var report = new DealerDetails();
report.ReportParameters["BeginDate"].Value = beginDate;
report.ReportParameters["EndDate"].Value = endDate;
rvMain.ReportSource = report;
rvMain.RefreshReport();
}
}
private void DatePicker_SelectedDateChanged(object sender, SelectionChangedEventArgs e)
{
DateTime? date = ReportDatePicker.SelectedDate;
if (rvMain != null && date.HasValue)
{
DateTime beginDate = date.Value.AddHours(-10); //setting range from 2pm to 2pm
DateTime endDate = date.Value.AddHours(14);
var report = new DealerDetails();
report.ReportParameters["BeginDate"].Value = beginDate;
report.ReportParameters["EndDate"].Value = endDate;
rvMain.ReportSource = report;
rvMain.RefreshReport();
}
}
0
Hi Andrew,
Generally you can keep the default report parameter and only modify the report parameter value with expression in the report definition directly. For example:
=Date(2014,12,30).AddHours(CDbl(14))
or
= CDate(Parameters.Parameter1.Value).AddHours(CDbl(14))
Still if you prefer to utilize your own parameters UI with MVVM in mind our suggestion is to use Data Binding for the Datepicker.Value and ReportViewer.ReportSource. Then from your ViewModel property that is binded to the Datepicker.Value you have to trigger property changed for the property that is binded to the ReportViewer.ReportSource with an updated ReportSource.Parameters.
Regards,
Peter
Telerik
Generally you can keep the default report parameter and only modify the report parameter value with expression in the report definition directly. For example:
=Date(2014,12,30).AddHours(CDbl(14))
or
= CDate(Parameters.Parameter1.Value).AddHours(CDbl(14))
Still if you prefer to utilize your own parameters UI with MVVM in mind our suggestion is to use Data Binding for the Datepicker.Value and ReportViewer.ReportSource. Then from your ViewModel property that is binded to the Datepicker.Value you have to trigger property changed for the property that is binded to the ReportViewer.ReportSource with an updated ReportSource.Parameters.
Regards,
Peter
Telerik
DevCraft Q1'14 is here! Watch the online conference to see how this release solves your top-5 .NET challenges. Watch on demand now.