2013-08-26 41 views
1

我有以下控件:數據源,報表查看器和兩個Telerik RadDateTimePicker。 我的Rad Controls看起來像的屏幕截圖。更新報表查看器的數據源中的參數ASP.NET C#

Rad Controls

我的報告是一個客戶端報表定義(.rdlc)。我在SQL 2008數據庫中有一個存儲過程,用於報告和數據源。

我已經配置存儲過程與Rad控件的參數源,通過GUI IDE,而不是在代碼中。那截屏:

DS Config

下面是數據源的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

DTimePickerEndDat e.SelectedDate =新日期(2013,08,28) –

回答

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(); 
    } 
相關問題