2

でレポートを作成し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データをフィルタリングするたびに使用することをお勧めします

4

0 に答える 0