【问题标题】:Accessing the SQL Server report viewer control in WPF在 WPF 中访问 SQL Server 报表查看器控件
【发布时间】:2023-03-16 16:39:01
【问题描述】:

我尝试在 WPF 中使用 VS2010 附带的报表查看器。我创建了报告并使用它工作的 Windows 应用程序对其进行了测试。然后我在 WPF 中使用相同的 RDLC 文件和相同的参数集,但它失败了。我使用的代码如下 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 方法中的代码示例,那也很棒

感谢和问候 文卡特斯

【问题讨论】:

    标签: wpf reportviewer


    【解决方案1】:

    以下是我为使 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>
    

    【讨论】:

    • 嗨,这对我有用。问题实际上是我必须为 WindowsFormHost 实例设置一个高度。
    • @Venkatesh 您应该将“身高”问题作为答案。这也是我的问题。
    猜你喜欢
    • 2017-02-16
    • 1970-01-01
    • 2011-09-30
    • 1970-01-01
    • 1970-01-01
    • 2014-03-12
    • 1970-01-01
    • 2011-09-09
    • 1970-01-01
    相关资源
    最近更新 更多