1

我有以下控件:数据源、报表查看器和两个 Telerik RadDateTimePicker。我的 Rad Controls 的屏幕截图。

辐射控制

我的报告是客户报告定义 (.rdlc)。我的 SQL 2008 数据库中有一个用于报告和数据源的存储过程。

我已经通过 GUI IDE 使用 Rad Control 的参数源配置了存储过程,而不是在代码中。屏幕截图:

DS 配置

以下是数据源的 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>

我想在代码中,能够使用我的两个日期和时间选择器更新我的数据源的参数。然后刷新报表查看器以更新报表。有人可以指出我正确的方向,以便我可以用尽可能少的代码来实现这一目标吗?提前感谢您的帮助。如果我可以列出更多信息,请告诉我。

4

1 回答 1

1

如果SelectedDateChanged是 DTP 控件,您将需要执行以下操作: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();
    }
于 2013-08-28T15:02:30.233 回答