Доступ к элементу управления просмотра отчетов SQL Server в WPF - PullRequest
5 голосов
/ 24 декабря 2010

Я пытался использовать средство просмотра отчетов, которое поставляется с VS2010 в WPF. Я создал отчет и протестировал то же самое с приложением Windows, оно работает. Затем я использовал тот же файл RDLC в WPF с тем же набором параметров, но он не работает. Код, который я использую, как показано ниже MainWindow.xaml.cs

public MainWindow()
{
   ObjectModel DataObject = new ObjectModel();
   DataObject.SetEPSDetails();
   WindowsFormsHost host = new WindowsFormsHost();
   ReportViewer RptViewer = new ReportViewer();
   host.Child = RptViewer;
   Grid HostGrid = this.FindName("GrdRow") as Grid;
   HostGrid.Children.Add(host);

   RptViewer.ProcessingMode = ProcessingMode.Local;
   RptViewer.LocalReport.ReportEmbeddedResource = "RDLWPF.PrintPreview.rdlc";

   RptViewer.LocalReport.SetParameters(new Microsoft.Reporting.WinForms.ReportParameter("Payer", DataObject.Payer));
   RptViewer.LocalReport.SetParameters(new Microsoft.Reporting.WinForms.ReportParameter("ValueDate", DataObject.ValueDate));
   RptViewer.LocalReport.SetParameters(new Microsoft.Reporting.WinForms.ReportParameter("FileName", DataObject.FileName));
   RptViewer.LocalReport.SetParameters(new Microsoft.Reporting.WinForms.ReportParameter("Description", DataObject.Description));
   RptViewer.LocalReport.SetParameters(new Microsoft.Reporting.WinForms.ReportParameter("PrintedDate", DataObject.PrintDate));
   RptViewer.LocalReport.SetParameters(new Microsoft.Reporting.WinForms.ReportParameter("FileLastUpdated", DataObject.FileLastUpdated));
   RptViewer.LocalReport.DataSources.Add(new Microsoft.Reporting.WinForms.ReportDataSource("FileDetails", DataObject.EPSDetails));
   RptViewer.RefreshReport();
}

Xaml, как показано ниже. Mainwindow.Xaml

<Window x:Class="RDLWPF.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:viewer="clr-namespace:Microsoft.Reporting.WinForms;assembly=Microsoft.ReportViewer.WinForms"
        Title="MainWindow" Height="350" Width="525"  AllowsTransparency="False" >
    <Grid x:Name="GrdRow">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"></RowDefinition>
        </Grid.RowDefinitions>

    </Grid>

Я только что получил пустое окно XAML. Элемент управления отчетом также не отображается. Я знаю, что делаю ошибку, но не могу найти, что это такое. Есть ли кто-нибудь, кто может исправить это для меня. Кроме того, если кто-то может выслать мне пример кода в MVVM appraoch, это было бы здорово

Спасибо и всего наилучшего Venkatesh

1 Ответ

5 голосов
/ 28 декабря 2010

Вот что я сделал, чтобы средство просмотра отчетов SQL появилось в моем приложении WPF:

1 - добавить ссылку на проект в WindowsFormsIntegation
2- Добавьте ссылку на проект в Microsoft.ReportViewer.Winforms
3- Добавьте ссылку на проект в Microsoft.ReportViewer.Common

4 - Определить WindowsFormsHost в моем представлении модель

public MainWindowViewModel()
{
   ReportViewer reportViewer = new ReportViewer();
   _viewer.Child = reportViewer;
}

private WindowsFormsHost _viewer = new WindowsFormsHost();
public WindowsFormsHost Viewer
{
  get
  {
    return _viewer;
  }
  set
  {
    _viewer = value;
    NotifyPropertyChanged("Viewer");
  }
}

4 - Привязать ссылку на модель вида из вида

<Grid>
  <Grid.RowDefinitions>
    <RowDefinition/>
  </Grid.RowDefinitions>
  <ContentPresenter Grid.Row="0" Content="{Binding Viewer}" />
</Grid>
...