我有以下控件:数据源,报表查看器和两个Telerik RadDateTimePicker。 我的Rad Controls看起来像的屏幕截图。
我的报告是客户报告定义(.rdlc)。我在SQL 2008数据库中有一个存储过程,用于报告和数据源。
我通过GUI IDE使用Rad Control的参数源配置存储过程,而不是使用代码。屏幕截图:
以下是数据源的ASP代码:
<asp:SqlDataSource ID="DataSourceViewWeeklySummary" runat="server"
ConnectionString="<%$ ConnectionStrings:SERVER %>"
SelectCommand="ProcedureWeeklySummary" SelectCommandType="StoredProcedure">
<SelectParameters>
<asp:ControlParameter ControlID="DTimePickerStartDate" Name="startDate"
PropertyName="SelectedDate" Type="DateTime" />
<asp:ControlParameter ControlID="DTimePickerEndDate" DefaultValue=""
Name="endDate" PropertyName="SelectedDate" Type="DateTime" />
</SelectParameters>
</asp:SqlDataSource>
我想在代码中,能够用我的两个日期和时间选择器更新我的数据源的参数。然后刷新报表查看器以更新报表。有人能指出我正确的方向,以便我可以用尽可能少的代码实现这一目标吗?在此先感谢您的帮助。如果我能列出更多信息,请告诉我。
答案 0 :(得分:1)
在DTP控件的SelectedDateChanged
事件中,您需要执行以下操作:StartDateVariable = e.NewDate
。
然后,在报告的ReportRefresh
事件中,您需要更新以下参数:DataSource.SelectParameters[0].DefaultValue = StartDateVariable;
。
请确保在离开DataBind()
事件之前致电ReportRefresh
(除非您在其他地方处理此事件。
此外,您可能需要进行某些类型的转换/转换。如果我没弄错,DefaultValue
属性是一个字符串,那么您需要将变量转换为字符串,或将新日期转换为字符串。
以下是一个“完整”的例子。
protected void DTimePickerStartDate_SelectedDateChanged(object sender, Telerik.Web.UI.Calendar.SelectedDateChangedEventArgs e)
{
StartDate = Convert.ToString(e.NewDate);
}
protected void DTimePickerEndDate_SelectedDateChanged(object sender, Telerik.Web.UI.Calendar.SelectedDateChangedEventArgs e)
{
EndDate = Convert.ToString(e.NewDate);
}
protected void ReportViewer1_ReportRefresh(object sender, System.ComponentModel.CancelEventArgs e)
{
DataSourceViewWeeklySummary.SelectParameters[0].DefaultValue = StartDate;
DataSourceViewWeeklySummary.SelectParameters[1].DefaultValue = EndDate;
DataSourceViewWeeklySummary.DataBind();
}