Отчет Telerik в Silverlight, параметры не поступают на сервер

#c# #silverlight #telerik-reporting

#c# #silverlight #telerik-отчетность

Вопрос:

Я передаю параметры таким образом:

         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);