Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 传递参数-ReportViewer本地模式_C#_Sql_Reporting Services_Reportviewer - Fatal编程技术网

C# 传递参数-ReportViewer本地模式

C# 传递参数-ReportViewer本地模式,c#,sql,reporting-services,reportviewer,C#,Sql,Reporting Services,Reportviewer,我正在使用VS2010中的ReportViewer控件在本地报告中传递参数。用户单击商户,然后按下按钮(未显示),然后呈现报告 我尝试过使用此视频: 问题:代码不起作用-在底部的xxxx附近,我想不出里面应该有什么 问题:我希望摆脱这段代码,使用linqtosql或更简单的东西 protected void Page_Load(object sender, EventArgs e) { DataSet1TableAdapters.MerchantNamesTableAda

我正在使用VS2010中的ReportViewer控件在本地报告中传递参数。用户单击商户,然后按下按钮(未显示),然后呈现报告

我尝试过使用此视频:

问题:代码不起作用-在底部的xxxx附近,我想不出里面应该有什么

问题:我希望摆脱这段代码,使用linqtosql或更简单的东西

protected void Page_Load(object sender, EventArgs e)
    {
        DataSet1TableAdapters.MerchantNamesTableAdapter merchantNamesTableAdapter = new DataSet1TableAdapters.MerchantNamesTableAdapter();
        ddlMerchants.DataSource = merchantNamesTableAdapter.GetDataAllMerchants();
        ddlMerchants.DataTextField = "Name";
        ddlMerchants.DataValueField = "MerchantUID";
        ddlMerchants.DataBind();
        ReportViewer1.Visible = false;
    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        ReportViewer1.Visible = true;
        var newDataSet = new DataSet();

        SqlConnection sqlConnection = new SqlConnection("Data Source=.;Initial Catalog=myDataBase;Integrated Security=True");
        SqlDataAdapter sqlDataAdapter = new SqlDataAdapter();
        SqlCommand sqlCommand = new SqlCommand();
        sqlCommand.Connection = sqlConnection;
        sqlCommand.CommandType = CommandType.Text;
        sqlCommand.CommandText = "select * from merchant where merchantUID = @MerchantUID";
        sqlCommand.Parameters.AddWithValue("@MerchantUID", ddlMerchants.SelectedValue);
        sqlDataAdapter.SelectCommand = sqlCommand;
        sqlDataAdapter.Fill(newDataSet);

        ReportDataSource datasource = new ReportDataSource(xxxx, newDataSet.Tables(0));

        ReportViewer1.LocalReport.DataSources.Clear();
        ReportViewer1.LocalReport.DataSources.Add(datasource);
        ReportViewer1.LocalReport.Refresh();
    }


xxxx只是您想要拥有的数据源的名称。它可以是任何东西,并由构造函数用于将其转换为命名数据源。它只是一个标识符。比如pass“Merchent_Redemptions”或者你喜欢的任何东西。

xxxx只是你想要的数据源的名称。它可以是任何东西,并由构造函数用于将其转换为命名数据源。它只是一个标识符。比如通过“Merchent_赎回”或者你喜欢的任何东西。

在这种情况下,我通常遵循以下路径:

  • 我为报表创建了一个数据集:选择报表,然后菜单命令View-report Data;在“报告数据”窗口中,选择“新建…”数据集。我为数据集输入一个名称(假设赎回),然后选择New。。。接下来,通过DataSource,选择Object并导航到我的域(或dto)类。这样,我看到了我的类字段,我可以在报告中使用它

  • 如果需要,我在报表数据窗口中创建参数(右键单击参数节点),并定义参数的名称和类型

  • 我编写此代码是为了将数据和参数(如果需要)传递给报表:

    viewer.Reset();
    ReportDataSource dataSource = new ReportDataSource();
    // I use a service/repository; you could also use Linq2Sql or EntityFramework 
    IList<Redemption> redemptions = _service.GetRedemptions(merchantId);
    BindingSource bindingSource = new BindingSource(redemptions, string.Empty);
    dataSource.Name = "Redemptions";
    dataSource.Value = bindingSource;
    viewer.LocalReport.DataSources.Add(getDataSource(sourceInfo));
    String reportName = "AD.Conso.MyReport.rdlc";
    viewer.LocalReport.ReportEmbeddedResource = reportName;
    
    IList<ReportParameter> parameters = new List<ReportParameter>();
    parameters.Add(new ReportParameter("myParameterName", "myParameterValue"));
    viewer.LocalReport.SetParameters(parameters);
    viewer.RefreshReport();
    
    viewer.Reset();
    ReportDataSource dataSource=新的ReportDataSource();
    //我使用服务/存储库;您还可以使用Linq2Sql或EntityFramework
    IList redemptions=_service.GetRedemptions(merchantId);
    BindingSource BindingSource=新的BindingSource(赎回,string.Empty);
    dataSource.Name=“赎回”;
    Value=bindingSource;
    viewer.LocalReport.DataSources.Add(getDataSource(sourceInfo));
    String reportName=“AD.Conso.MyReport.rdlc”;
    viewer.LocalReport.ReportEmbeddedResource=reportName;
    IList参数=新列表();
    添加(新的ReportParameter(“myParameterName”、“myParameterValue”);
    viewer.LocalReport.SetParameters(参数);
    viewer.RefreshReport();
    
  • 注意:我从一个项目中获取了这段代码,我在一个稍微不同的上下文中使用它,因此在您的上下文中可能不需要某些代码


    • 在这种情况下,我通常遵循以下路径:

      • 我为报表创建了一个数据集:选择报表,然后菜单命令View-report Data;在“报告数据”窗口中,选择“新建…”数据集。我为数据集输入一个名称(假设赎回),然后选择New。。。接下来,通过DataSource,选择Object并导航到我的域(或dto)类。这样,我看到了我的类字段,我可以在报告中使用它

      • 如果需要,我在报表数据窗口中创建参数(右键单击参数节点),并定义参数的名称和类型

      • 我编写此代码是为了将数据和参数(如果需要)传递给报表:

        viewer.Reset();
        ReportDataSource dataSource = new ReportDataSource();
        // I use a service/repository; you could also use Linq2Sql or EntityFramework 
        IList<Redemption> redemptions = _service.GetRedemptions(merchantId);
        BindingSource bindingSource = new BindingSource(redemptions, string.Empty);
        dataSource.Name = "Redemptions";
        dataSource.Value = bindingSource;
        viewer.LocalReport.DataSources.Add(getDataSource(sourceInfo));
        String reportName = "AD.Conso.MyReport.rdlc";
        viewer.LocalReport.ReportEmbeddedResource = reportName;
        
        IList<ReportParameter> parameters = new List<ReportParameter>();
        parameters.Add(new ReportParameter("myParameterName", "myParameterValue"));
        viewer.LocalReport.SetParameters(parameters);
        viewer.RefreshReport();
        
        viewer.Reset();
        ReportDataSource dataSource=新的ReportDataSource();
        //我使用服务/存储库;您还可以使用Linq2Sql或EntityFramework
        IList redemptions=_service.GetRedemptions(merchantId);
        BindingSource BindingSource=新的BindingSource(赎回,string.Empty);
        dataSource.Name=“赎回”;
        Value=bindingSource;
        viewer.LocalReport.DataSources.Add(getDataSource(sourceInfo));
        String reportName=“AD.Conso.MyReport.rdlc”;
        viewer.LocalReport.ReportEmbeddedResource=reportName;
        IList参数=新列表();
        添加(新的ReportParameter(“myParameterName”、“myParameterValue”);
        viewer.LocalReport.SetParameters(参数);
        viewer.RefreshReport();
        
      • 注意:我从一个项目中获取了这段代码,我在一个稍微不同的上下文中使用它,因此在您的上下文中可能不需要某些代码


      数据表被用作构造函数,而不是作为索引写入

      下面是代码 ReportDataSource datasource=新的ReportDataSource(xxxx,newDataSet.Tables(0))

      代码应采用这种格式
      ReportDataSource datasource=新的ReportDataSource(xxxx,newDataSet.Tables[0])

      数据表被用作构造函数,而不是作为索引写入

      下面是代码 ReportDataSource datasource=新的ReportDataSource(xxxx,newDataSet.Tables(0))

      代码应采用这种格式
      ReportDataSource datasource=新的ReportDataSource(xxxx,newDataSet.Tables[0])

      如果您有dataAdapator,则在表单加载时尝试此操作:-

          this.DataTableAdapter.Fill(this.myDatabase_DataSet.tableName, parameter01, parameter02);
          this.reportViewer1.RefreshReport();
      

      如果您有dataAdapator,则在表单加载时尝试此操作:-

          this.DataTableAdapter.Fill(this.myDatabase_DataSet.tableName, parameter01, parameter02);
          this.reportViewer1.RefreshReport();