2011-05-19 43 views
1

我傳遞的參數是這樣的:Telerik的在Silverlight報告,參數不會到達服務器

 public PrintReport() 
    { 
     InitializeComponent(); 
     this.ReportViewer1.RenderBegin += new Telerik.ReportViewer.Silverlight.RenderBeginEventHandler(ReportViewer1_RenderBegin); 
    } 

    void ReportViewer1_RenderBegin(object sender, Telerik.ReportViewer.Silverlight.RenderBeginEventArgs args) 
     { 
     args.ParameterValues["ObjectTypeId"] = 40; 
     args.ParameterValues["Page"] = 1; 
     args.ParameterValues["PageSize"] = 10; 
    } 

而在服務器我這樣做:

public partial class ObjectInstancesReport : Telerik.Reporting.Report 
{ 
    private IEnumerable<ObjectInstance> _objectInstances; 

    public ObjectInstancesReport() 
    { 
     InitializeComponent(); 

     var objectTypeId = this.ReportParameters["ObjectTypeId"].Value == null ? 40 : (int)this.ReportParameters["ObjectTypeId"].Value; 
     var searchText = (string)this.ReportParameters["SearchText"].Value; 
     var page = this.ReportParameters["Page"].Value == null ? 1 : (int)this.ReportParameters["Page"].Value; 
     var pageSize = this.ReportParameters["PageSize"].Value == null ? 20 : (int)this.ReportParameters["PageSize"].Value; 

,但我得到的只有空值

回答

1

找到答案,參數在構造函數上不可用,需要使用這個:

 public ObjectInstancesReport() 
    { 
     // 
     // Required for telerik Reporting designer support 
     // 
     InitializeComponent(); 

     table1.ItemDataBinding += new EventHandler(table1_ItemDataBinding); 
     this.DataSource = null; 

     this.Report.NeedDataSource += new EventHandler(Report_NeedDataSource); 
    } 

    void Report_NeedDataSource(object sender, EventArgs e) 
    { 
     var objectTypeId = this.ReportParameters["ObjectTypeId"].Value == null ? 1 : Convert.ToInt32(this.ReportParameters["ObjectTypeId"].Value); 
     var searchText = (string)this.ReportParameters["SearchText"].Value; 
     var page = this.ReportParameters["Page"].Value == null ? 1 : Convert.ToInt32(this.ReportParameters["Page"].Value); 
     var pageSize = this.ReportParameters["PageSize"].Value == null ? 20 : Convert.ToInt32(this.ReportParameters["PageSize"].Value);