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がビジネスレイヤーにあり、関数GetBoughtItemsForUserがデータセット内のRDLCファイルによって呼び出されていると仮定します。

次の手順に従って、RDLCファイルを構成します-

  1. ObjectDataSourceで、ConfigureDataSourceを選択してから、メソッドGetBoughtItemsForUserを含むビジネスレイヤーを選択します。

  2. 次に、[データメソッドの定義]ウィンドウで、メソッドを選択します-GetBoughtItemsForUser、ここでは私の場合はGetAllFacultyです。

ここに画像の説明を入力してください

  1. [次へ]をクリックします

ここに画像の説明を入力してください

  1. これで、[パラメータの定義]ウィンドウが自動的に表示されます(パラメータ化された関数の場合のみ)。ここでパラメータソースを選択し、UIレイヤーで使用しているSessionFieldで適切なパラメータ名を指定します。私の場合はSessiontypeと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 に答える