0

我有一个绑定到以下课程的 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;}
}

在我的 rdlc 中,我将报告数据集设置为 GetBoughtItemsForUser。现在我想传递实际上是 Page.User.Identity.Name 的 userName 值,那么我应该怎么做呢?

4

4 回答 4

2
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();
于 2012-07-13T14:51:28.457 回答
1

它很容易 -

如果我假设您使用的是 Web 应用程序。只需在 UI 层的某处设置一个 Session 变量,例如: Session["exp"] = 6;

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

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

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

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

在此处输入图像描述

  1. 点击下一步

在此处输入图像描述

  1. 现在您将自动获得定义参数窗口(仅在参数化函数的情况下),在这里选择参数源并在您在 UI 层中使用的SessionField中给出适当的参数名称,在我的情况下它是会话类型和 exp。

  2. 点击完成按钮,你就完成了。

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

于 2015-08-19T19:04:12.357 回答
0

尝试这个

  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(); 
于 2013-12-28T12:56:12.000 回答
0
               reportParameters.Clear();
                reportParameters.Add(new ReportParameter("prmClientRef", find));
                reportParameters.Add(new ReportParameter("prmClientName", string.Format("{0} {1}",                    allval.Title, allval.ClientName)));

                this.viewerInstance.LocalReport.SetParameters(reportParameters);
                this.ProductBindingSource.DataSource = storageToPrint.Where(x => x.ClientRef == find).ToList();
                this.viewerInstance.RefreshReport();
                this.viewerInstance.Refresh();
于 2014-10-10T15:38:23.597 回答