でレポートを作成しWPF
ます。
2 つの関連するテーブルがあります。
表 A - 顧客:
CustomerID(PK)
Names
Phone Number
Customer Num
表 B 項目:
Products
Price
CustomerID
次のようなレポートを生成できるようにしたいと考えています。
CustomerA
Items Price
Item A 10
Item B 10
Item C 10
---------------
Total 30
だからこれは私がやったことです:
<Window x:Class="ReportViewerWPF.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:rv="clr-namespace:Microsoft.Reporting.WinForms;
assembly=Microsoft.ReportViewer.WinForms"
Title="Customer Report" Height="300" Width="400">
<Grid>
<WindowsFormsHost Name="windowsFormsHost1">
<rv:ReportViewer x:Name="reportViewer1"/>
</WindowsFormsHost>
</Grid>
次に、データセットを作成して 2 つのテーブルをロードし、続いてレポート ウィザードを実行しました (使用可能なすべてのフィールドをドラッグして [値] ペインにドロップしました)。
WPF ウィンドウの背後にあるコードは次のとおりです。
public partial class CustomerReport : Window
{
public CustomerReport()
{
InitializeComponent();
_reportViewer.Load += ReportViewer_Load;
}
private bool _isReportViewerLoaded;
private void ReportViewer_Load(object sender, EventArgs e)
{
if (!_isReportViewerLoaded)
{
Microsoft.Reporting.WinForms.ReportDataSource reportDataSource1 = new Microsoft.Reporting.WinForms.ReportDataSource();
HM2DataSet dataset = new HM2DataSet();
dataset.BeginInit();
reportDataSource1.Name = "DataSet";//This is the dataset name
reportDataSource1.Value = dataset.CustomerTable;
this.reportViewer1.LocalReport.DataSources.Add(reportDataSource1);
this.reportViewer1.LocalReport.ReportPath = "../../Report3.rdlc";
dataset.EndInit();
HM2DataSetTableAdapters.CustomerTableAdapter funcTableAdapter = new HM2DataSetTableAdapters.CustomerTableAdapter();
funcTableAdapter.ClearBeforeFill = true;
funcTableAdapter.Fill(dataset.CustomerTable);
_reportViewer.RefreshReport();
_isReportViewerLoaded = true;
}
}
ご想像のとおり、これにより、この顧客のリストにアイテムと価格が読み込まれました。
Customer Items Price
Customer A Items A 10
Customer A Items B 10
Customer B Items D 10
Customer B Items C 10
このレポートを微調整して、ユーザーがレポートに表示したい顧客をフィルターできる上記のようにするにはどうすればよいですか? 助けてくれてありがとう。LINQ
データをフィルタリングするたびに使用することをお勧めします