C# 如何将参数值从rdlc报告传递到web窗体项目中的方法?

C# 如何将参数值从rdlc报告传递到web窗体项目中的方法?,c#,asp.net,webforms,rdlc,localreport,C#,Asp.net,Webforms,Rdlc,Localreport,我有一份rdlc报告,它绑定到以下类: public class Product { DataContext context; public Product() { context = new DataContext(); } public List<Product> GetBoughtItemsForUser(string userName) { //linq query to collect data return query.T

我有一份rdlc报告,它绑定到以下类:

public class Product
{
  DataContext context;

  public Product()
  {
    context = new DataContext();
  }
  public List<Product> GetBoughtItemsForUser(string userName)
  {
    //linq query to collect data
    return query.ToList();
  }

  public string Name {get;set;}
  public int Quantity {get;set;}
}
公共类产品
{
数据上下文;
公共产品()
{
context=newdatacontext();
}
公共列表GetBoughtItemsForUser(字符串用户名)
{
//用于收集数据的linq查询
返回query.ToList();
}
公共字符串名称{get;set;}
公共整数数量{get;set;}
}
在我的rdlc中,我将报表数据集设置为GetBoughtItemsForUser。现在我想传递用户名值,它实际上是Page.User.Identity.Name,那么我应该怎么做呢

试试这个

var p = new Product();

//fill class properties with data

ReportParameter[] params = new ReportParameter[2]; 
params[0] = new ReportParameter("Name ", p.Name , false); 
params[1] = new ReportParameter("Quantity ", p.Quantity , false); 
this.ReportViewer1.ServerReport.SetParameters(params);     
this.ReportViewer1.ServerReport.Refresh();
  rv = ReportViewer1;
            rv.LocalReport.ReportPath = @"Report.rdlc";    
            rv.LocalReport.DataSources.Clear();
            ReportDataSource rs = new ReportDataSource("DataSetName", GetData());
            rv.LocalReport.DataSources.Add(rs);                        


            ReportParameter param = new ReportParameter("paramName", paramValue);            
            rv.LocalReport.SetParameters(param); 

            rv.LocalReport.Refresh(); 
试试这个

  rv = ReportViewer1;
            rv.LocalReport.ReportPath = @"Report.rdlc";    
            rv.LocalReport.DataSources.Clear();
            ReportDataSource rs = new ReportDataSource("DataSetName", GetData());
            rv.LocalReport.DataSources.Add(rs);                        


            ReportParameter param = new ReportParameter("paramName", paramValue);            
            rv.LocalReport.SetParameters(param); 

            rv.LocalReport.Refresh(); 
这很容易-

如果我假设您使用的是Web应用程序。只需在UI层的某个地方设置一个会话变量,比如:Session[“exp”]=6

现在假设您的类产品位于业务层,并且数据集中的RDLC文件正在调用您的函数GetBoughtItemsForUser

按照以下步骤配置RDLC文件-

  • ObjectDataSource中选择ConfigureDataSource,然后选择包含方法-GetBoughtItemsForUser的业务层

  • 现在,在“定义数据方法”窗口中,选择您的方法-GetBoughtItemsForUser,在我的例子中,它是GetAllFaculty

  • 单击下一步
  • 现在,您将自动获得定义参数窗口(仅在参数化函数的情况下),在这里选择参数源,并在您的UI层中使用的会话字段中给出相应的参数名称,在我的示例中,它是会话类型和exp

  • 点击完成按钮,你就完成了

  • 注意:您不必担心会话的转换 变量转换为适当的类型,在大多数情况下 自动完成。否则您可以点击“显示高级属性”

    这很容易-

    如果我假设您使用的是Web应用程序。只需在UI层的某个地方设置一个会话变量,比如:Session[“exp”]=6

    现在假设您的类产品位于业务层,并且数据集中的RDLC文件正在调用您的函数GetBoughtItemsForUser

    按照以下步骤配置RDLC文件-

  • ObjectDataSource中选择ConfigureDataSource,然后选择包含方法-GetBoughtItemsForUser的业务层

  • 现在,在“定义数据方法”窗口中,选择您的方法-GetBoughtItemsForUser,在我的例子中,它是GetAllFaculty

  • 单击下一步
  • 现在,您将自动获得定义参数窗口(仅在参数化函数的情况下),在这里选择参数源,并在您的UI层中使用的会话字段中给出相应的参数名称,在我的示例中,它是会话类型和exp

  • 点击完成按钮,你就完成了

  • 注意:您不必担心会话的转换 变量转换为适当的类型,在大多数情况下 自动完成。否则您可以点击“显示高级属性”


    该in控制器是否可以将参数从MVC5控制器发送到rdlc报告生成器aspxis该in控制器是否可以将参数从MVC5控制器发送到rdlc报告生成器aspx