也来一篇关于Infragistics WPF Report的使用教程 (一)
前言
Infragistics Report是一款比較灵活的报表控件, 比微软的rdlc控件至少在页面打印上, 页面的控制比較好调整.
这里使用的是Infragistics Ultimate v14.1 试用版
开发工具是Visual Studio 2013 Framework 4.0 WPF Windows应用程序.
加入报表
将XamReportViewer从左側的工具栏中拖到右側的窗口中.
<ig:XamReportViewer HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
</ig:XamReportViewer>
系统会自己主动的加入引用, 记住这些引用,公布的时候, 把这些引用一并打包. 这样在client执行时就不会出现故障了.
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdzU5ODc5MjEz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
1. 先定义一个Person的类, 实现INofifyPropertyChanged接口.
public class Person:INotifyPropertyChanged
{
#region Implement of INotifyProeprtyChanged.
public event PropertyChangedEventHandler PropertyChanged; private void OnPropertyChanged(string propertyName)
{
PropertyChangedEventHandler handler = this.PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(propertyName));
}
}
#endregion private string _name;
private int _age;
private byte[] _profilePhoto;
public string Name
{
get { return _name; }
set { _name = value;
OnPropertyChanged("Name");
}
} public int Age
{
get { return _age; }
set { _age = value; OnPropertyChanged("Age"); }
} public byte[] ProfilePhoto
{
get { return _profilePhoto; }
set { _profilePhoto = value; OnPropertyChanged("ProfilePhoto"); }
}
}
2. 我们再定义一个MainWindowViewModel, 用于关联MainWindow.xaml的DataContext.
在MainWindow.xaml 中我们要New出一个 MainWindowViewModel的实体, 并对实体中的属性赋值. 这样才干够将相应的參数绑定到报表中. 即MVVM模式.
public class MainWindowViewModel : INotifyPropertyChanged
{
#region Implement of INotifyProeprtyChanged. public event PropertyChangedEventHandler PropertyChanged; private void OnPropertyChanged(string propertyName)
{
PropertyChangedEventHandler handler = this.PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(propertyName));
}
} #endregion private ObservableCollection<Person> _personCollection;
private DateTime _printDateTime; public ObservableCollection<Person> PersonCollection
{
get { return _personCollection; }
set
{
_personCollection = value;
OnPropertyChanged("PersonCollection");
}
} public DateTime PrintDateTime
{
get { return _printDateTime; }
set
{
_printDateTime = value;
OnPropertyChanged("PrintDateTime");
}
}
}
创建报表
加入数据源
1. 创建报表, 安装Infragistics之后, 新加入项目的时候, 会有一项infragistics, 按图所看到的, 加入报表.
2. 创建数据源
通过Report Data Explorer工具栏, 右击, 选择 DataSource - Add new Data Source,
在后面弹出的窗体中选择"Object Data Source", 点击下一步,
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdzU5ODc5MjEz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" width="300" height="300" alt="">
选择我们刚刚定义好的MainWindowViewModel.cs, 这里须要注意一下, 在创建编辑好MainViewModel.cs之后, 须要编译一下, 加入数据源的时候才干显示出来. 否则是不会显示的.
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdzU5ODc5MjEz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
加入參数
加入參数的相对简单, 从左側的Report Data Explorer中右击Parameter, 选择"Add Static Value List Parameter", 输入參数名称就可以.
加入完毕之后, 点击OK就可以, 然后将数据源, 參数直接拖到右側的报表区域中.
绑定參数
绑定的參数之后的代码
<ig:XamReportViewer HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<ig:XamReportViewer.RenderSettings>
<ig:ClientRenderSettings DefinitionUri="/InfragisticsReportSample;component/Person.igr">
<ig:ClientRenderSettings.DataSources>
<ig:DataSource TargetDataSource="Person" ItemsSource="{Binding PersonCollection}"/>
</ig:ClientRenderSettings.DataSources>
</ig:ClientRenderSettings>
</ig:XamReportViewer.RenderSettings>
<ig:XamReportViewer.Parameters>
<ig:Parameter ParameterName="PrintDate" ParameterValue="{Binding PrintDateTime}"/>
</ig:XamReportViewer.Parameters>
</ig:XamReportViewer>
TargetDataSource = "Person" 指的是绑定的Collection的类型为Person
ItemsSource = "{Binding PersonCollection}" 指的是绑定数据源为PersonCollection
Parametername = "PrintDate" 是指我们在报表中创建的參数名称为PrintDate, ParameterValue = {Binding PrintDateTime} 是指绑定PrintDateTime的属性.
加入数据
在创建出MainWindowViewModel的时候, 指定数据源, 就能够显示出报表了.
public MainWindow()
{
InitializeComponent(); MainWindowViewModel model = new MainWindowViewModel(); model.PersonCollection = new ObservableCollection<Person>();
model.PrintDateTime = DateTime.Now; Person p = new Person();
p.Name = "哆拉A梦";
p.Age = 99;
p.ProfilePhoto = GetByteImage("doraemon.jpg");
model.PersonCollection.Add(p); p = new Person();
p.Name = "阿拉蕾";
p.Age = 100;
p.ProfilePhoto = GetByteImage("arale.jpg");
model.PersonCollection.Add(p); this.DataContext = model;
} public byte[] GetByteImage(string imagepath)
{
FileStream fs = new FileStream(imagepath, FileMode.Open);
byte[] byData = new byte[fs.Length];
fs.Read(byData, 0, byData.Length);
fs.Close();
return byData;
}
}
最后的报表结果
也来一篇关于Infragistics WPF Report的使用教程 (一)的更多相关文章
- 【基于WPF+OneNote+Oracle的中文图片识别系统阶段总结】之篇一:WPF常用知识以及本项目设计总结
篇一:WPF常用知识以及本项目设计总结:http://www.cnblogs.com/baiboy/p/wpf.html 篇二:基于OneNote难点突破和批量识别:http://www.cnblog ...
- WPF 精修篇 Winform 嵌入WPF控件
原文:WPF 精修篇 Winform 嵌入WPF控件 首先 创建WPF控件库 这样就有了一个WPF界面 在wpf中增加界面等 在winform中增加WPFDLL 重新生成解决方案 在左侧工具栏 出现W ...
- VS2019打包WPF安装程序最新教程
VS2019打包WPF安装程序最新教程,使用Visual Studio 2019开发的WPF程序如果想要打包为安装程序,除了在VS2019找到WPF项目类库直接右键发布之外,更常用的还是将其打包为ex ...
- WPF/MVVM Quick Start Tutorial - WPF/MVVM 快速入门教程 -原文,翻译及一点自己的补充
转载自 https://www.codeproject.com/articles/165368/wpf-mvvm-quick-start-tutorial WPF/MVVM Quick Start T ...
- 大数据工具篇之Hive与MySQL整合完整教程
大数据工具篇之Hive与MySQL整合完整教程 一.引言 Hive元数据存储可以放到RDBMS数据库中,本文以Hive与MySQL数据库的整合为目标,详细说明Hive与MySQL的整合方法. 二.安装 ...
- 大数据工具篇之Hive与HBase整合完整教程
大数据工具篇之Hive与HBase整合完整教程 一.引言 最近的一次培训,用户特意提到Hadoop环境下HDFS中存储的文件如何才能导入到HBase,关于这部分基于HBase Java API的写入方 ...
- 10篇写给Git初学者的最佳教程(转)
身为网页设计师或者网页开发者的你,可能已经听说过Git这个正快速成长的版本控制系统.它由GitHub维护:GitHub是一个开放性的.存储众人代码的网站.如果你想学习如何使用Git,请参考本文.在文章 ...
- 接着上一篇 《Is WPF dead》
最近美国的PM传来消息,说微软在收集开发者的意见,会对WPF进行改进,微软会主要在1) performance 2) interop 3) touch and 4) access to WinRT A ...
- C/S C# WPF锐浪报表教程
前言:锐浪报表是一种中国式报表的报表开发工具.博主使用锐浪报表有一段时间了,积累了一些经验希望能帮助你快速掌握并使用 第一章:集成项目 首先我们先去锐浪报表官网下载并安装锐浪报表. 创建WPF应用程序 ...
随机推荐
- MSI/MSI-X
MSI PCI2.2规范引进了MSI作为传统的基于线的中断的替代方案.MSI允许设备通过向一个特定的地址写入一个特定的值来允许中断,而不是使用一个专有的引脚来触发中断.注意消息的目的地址和消息数据被当 ...
- SRM 501 DIV1 500pt(DP)
题目简述 给定一个长度为n的序列,每个数值的范围为[-1,40],-1可以替换成0~40之间的数,要求你求出符合以下条件的序列有多少个? 1.每个数都是0~40之间的数 2.对于每一个数A[i],都需 ...
- [C语言 - 8] 枚举enum
枚举是c语言中得一种基本数据类型,不是数据结构 用于声明一组常数 1. 3中枚举变量的方式 a. 先定义类型, 再定义变量 b. 同时定义类型和变量 c. 匿名定义 enum Season {Spri ...
- 精通Linux的“kill”命令
无论你使用哪种操作系统,你一定会遇到某个行为失常的应用,它把自己锁死并拒绝关闭.在Linux(还有Mac),你可以用一个"kill"命令强制终结它.在这个教程中,我们将展示给你多种 ...
- POJ1189钉子和小球(DP)
对钉子DP,如果钉子存在DP[i+1][j]+=DP[i][j]; DP[i+1][j+1]+=DP[i][j]; 如果不存在DP[i+2][j+1]+=4*DP[i][j]; 见代码:(有一个比较坑 ...
- 在Linux下部署activemq
今天的任务就是在一台新的服务器上继续部署activemq.其实都蛮简单的.首先先下载包:115U盘下载 2 上传到linux下的某个文件夹下.解压缩 tar -zxvf apache-activemq ...
- 神经网络学习-问题(二)-scipy未正确安装报DLL找不到的问题
问题如下: E:\project\DL\python\keras>python keras_sample.pyUsing Theano backend.Traceback (most recen ...
- ASCII,GB2312,GBK,Unicode,Utf-8
1.ASCII:American Stardand Code for Information Interchange,是当时美国制定出来的一套编码系统,使用7位或8位二进制来表示西文字符,0-31以及 ...
- nodejs小问题:[1]express不是内部或外部命令
nodejs小问题:[1]express不是内部或外部命令 浏览:9424 | 更新:2015-08-28 05:31 1 2 3 4 5 6 7 分步阅读 一时兴起想学习点东西,准备在heroku上 ...
- VMWare里安装64位Linux 的方法
1.CPU AMD系列的CPU略过 Intel系列的CPU芯片需要支持EM64T和VT技术才行,并且BIOS也要支持才可以. 为了确定你的Intel CPU是否支持VT,请查看: http://com ...