1.对象的操作

开始之前

先说一下,操作对象,是依靠ReportDocument,
基础代码如下:

C# code
ReportDocument myReport = new ReportDocument(); string reportPath = Server.MapPath("crystalreport1.rpt"); myReport.Load(reportPath); //PULL或PUSH方式的数据处理 //... CrystalReportViewer1.ReportSource = myReport; //然后,才是下文中的代码

关于水晶报表里的对象,我们直观的来看一下。
在模板空白处点邮件,选“插入”,鼠标放到“特殊字段”上,不要点,会出现如下菜单。

上面这些,都是报表对象或说是报表部件。恩,这些我们都可以进行控制。

操作的基本语法是:

C# code
myReport.ReportDefinition.ReportObjects[对象序号].方法或属性; //或 myReport.ReportDefinition.ReportObjects[对象名称].方法或属性;

对象序号在 .Net的水晶报表版本里很难直观的看出来,一般他是按加入报表的顺序来排的
这个很难去记住。有时候为了一些需要,在遍历的时候会用的到。
一般我们会用 名称。
在对象上点右键,设置对象格式,

在出来的界面上就可以看到对象的名称

ReportObjects就是我们前面所指的报表对象集合,单一对象就是一个ReportObject
对于ReportObject来说,通用的属性有这样一些

一般我们可以控制对象的位置,通过控制左上角的坐标,也就是top和left属性。
这里说一下水晶报表的坐标系和计量单位。

水晶报表的坐标系,以每个节的左上角为原点,往下往右两个方向递增延展。
计量单位是缇,与厘米的换算关系是:1厘米=567缇
所以在后面的代码中,你会看到我有这样的写法: 567*N 其实也就是N厘米。

另外还有 ObjectFormat下面的属性,可以控制对象的隐藏与显示,这个很实用吧,呵呵。

如抑制显示可以这样操作:

C# code
myReport.ReportDefinition.ReportObjects("text4").ObjectFormat.EnableSuppress = true;

ReportObject是个通用对象,而其实际上又是一个具体的对象。他有各自的特殊属性。
以文本框为例,他就会多出一些特性,比如Text属性,这样我们可以修改到文本框的内容。

具体操作如下:

C# code
//更改一个文本框的内容 TextObject x; x = (TextObject)myReport.ReportDefinition.ReportObjects["text4"]; x.Text = "我们的世界";

另外说一下,前面没提到的 数据字段,也可以这样操作。

C# code
//调整字段的位置 FieldObject fo; fo = (FieldObject)myReport.ReportDefinition.ReportObjects["NAME1"]; fo.Height = 567 * 3; fo.Width = 567 * 4; fo.Left = 567 * 1;

每个对象都有各自不同的属性,至于具体有多少对象,你可以按一下F2,
在 CrystalDecisions.CrystalReports.Engine这个命名空间下,以 Object结尾的,基本都是。

2:子报表里对象的操作
子报表里的对象操作跟主报表是一样的,主要是要先找到这个子报表对象。

下面这个方法是不对的

C# code
SubreportObject subObj; subObj = (SubreportObject)myReport.ReportDefinition.ReportObjects["subreport1"];

这个只会定义子报表在主报表内的特性,不能设置到子报表内的部件

要这样

C# code
myReport.Subreports[子报表序号].ReportDefinition.ReportObjects["xx"]; //序号从0开始计数,单纯子报表的一个序号 //或 myReport.Subreports[子报表名称].ReportDefinition.ReportObjects["xx"];

注意这个名称不是我们在子报表上点右键看到的名称,而是我们在设计子报表时指定的子报表名称

C# code
TextObject subtext; subtext = (TextObject)myReport.Subreports["xyz"].ReportDefinition.ReportObjects["text3"]; subtext.Text = "我是子报表里的内容哦";

3:参数的基本操作
参数是程序与报表交互的一个重要媒介,本节只做一个基础说明,后续的章节中会进一步介绍。
新建一个参数p1


拖到模板上,会自动显示为 ?pa1

代码中传递参数给报表的代码为:
SetParameterValue 后面的几个参数依次为:参数名称,参数值,子报表名称(如果是子报表参数的话)。

C# code
myReport.SetParameterValue("pa1", "我是一个参数");

在子报表中建立一个新的参数spa1,注意xyz是子报表名称

C# code
myReport.SetParameterValue("spa1", "我是一个参数","xyz");

当然,参数也可以传递给CrystalreportViewer,这里就不展开说了,用到的时候再说。

单纯从这个代码上来看,textbox和参数似乎可以等价
但是textbox一般只能用于显示一个字符串,但是参数则可以参与公式,过滤数据,控制对象的一些特性等等,用途更广泛一些。

好了,就到这里。这个基本上没有什么需要特别注意的。

阿泰,水晶报表--掌控对象相关推荐

  1. VB.NET水晶报表控件经验总结

    VB.NET水晶报表控件经验总结 http://developer.51cto.com  2009-10-16 13:30  佚名  weaseek  我要评论(0) 这里介绍对于VB.NET水晶报表 ...

  2. bdm导入mysql_vs 2010下使用水晶报表Crystal Reports

    vs 2010下使用水晶报表Crystal Reports 的详细步骤 一.所需条件 1. 工作环境 VS 2010(页面和报表文件要在不同文件夹),对VS 2008,VS 2005 也可. 2. 数 ...

  3. 6-1 水晶报表技术(上)

    本章内容<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 6-1 ...

  4. Asp.net中水晶报表的使用

    在我们对VS.Net中的水晶报表(Crystal Reports)进行研究之前,我和我朋友对如何将这个复杂的东东加入我们的Web应用有着非常的好奇心.一周以后,在阅读了大量的"HOWTO&q ...

  5. WCF医院管理系统技术解析(十)体检报告结果打印(水晶报表)

    WCF医院管理系统技术解析(十)体检报告结果打印(水晶报表) 对于已经完成体检的病人,对其进行体检结果的打印,其体检结果报告打印效果如图: 界面涉及到的控件有: 控件 说明 从工具箱中找到对应的报表控 ...

  6. 水晶报表使用经验总结

    资料: Asp.Net中使用水晶报表(上) www.dotnet8.com  2002-9-6  DotNet吧 这篇文章教你如何在.Net Web应用中使用水晶报表,也可以让你在学习过程中少走一些弯 ...

  7. CSDN社区关于水晶报表的讨论

    CSDN - 专家门诊 关闭窗口       主        题:  有关水晶报表的使用经验和资料总结,欢迎各位使用过水晶报表的同仁把自己在使用过程中的总结.经验.体会同大家共享!! 作       ...

  8. vs 2010下使用水晶报表Crystal Reports

    vs 2010下使用水晶报表Crystal Reports (2013-04-26 10:34:41) vs 2010下使用水晶报表Crystal Reports 的详细步骤 一.所需条件 1. 工作 ...

  9. vs 2008 winfrom 水晶报表使用Crystal Reports

    在管理系统中,打印是不可缺少的一种功能.而市场上也有各种各样的打印工具报表,其中以SAP公司的水晶报表最为出名,且其功能强大,开发也方便.在VS开发环境中现在已经不集成了,但是可以自己下载安装 . 工 ...

  10. Devexpress 控件做水晶报表小试牛刀(Master-Detail)!!!

    最近由于工作需要,项目中要求做水晶报表,所以就稍微研究了下 Devexpress控件做报表的功能.由于以前博主做报表都是用的是VS自带的,所以有什么不对的还希望大家多多指教. 添加从表     1.启 ...

最新文章

  1. 虚拟桌面环境需要一个什么样的接入网络?
  2. c++语言中如何写入文件,C++:在多线程程序中写入文件
  3. 深入理解android卷II 即将发布
  4. html5实现进度条功能效果非常和谐
  5. python 从大到小循环_python算法(3) 插入排序
  6. 在RedHat Linux系统中安装和配置snmp服务
  7. Git Your branch is ahead of ‘origin/master‘ by X commits解决方法
  8. SQL知识点脑图(一张图总结SQL)
  9. python贪吃蛇_python贪吃蛇
  10. 小白之WEB前端--第一篇
  11. python中 s是什么意思_这里面的s.name是什么意思啊?
  12. 信用卡如何使用?广发卡自动分期教你这样养卡技巧
  13. 量化交易 实战第一课 策略入门
  14. PPT中如何修改插入的图片为透明色
  15. aero peek_如何在Windows中禁用Aero Peek
  16. android高仿音乐播放器,Android开源音乐播放器之高仿云音乐黑胶唱片
  17. Hystrix断路器 - 概述
  18. 交大计算机组成原理期末试题及答案,交大网络计算机组成原理第三次作业-2016完整版...
  19. java爬虫框架Webcontroller
  20. 圣诞html源代码,html5 3D圣诞树源码

热门文章

  1. 树形动态规划(树状DP)小结
  2. 如何利用COOC软件绘制动态交互图?
  3. java如何使用barcode4j生成条形码_JAVA条形码生成组件barcode4j使用
  4. 如何创建sis文件——概叙
  5. 目前世界上15款优秀杀毒软件
  6. java-net-php-python-69jspm高校在线课程平台计算机毕业设计程序
  7. amap高德地图应用(el-amap-marker坐标点;el-amap-info-window信息窗体;el-amap-polyline折线、折线颜色,宽度、实虚线等)
  8. LTE 中的CQI,PMI,RI上报机制
  9. SAP License:FI/CO模块常用表及事务代码
  10. Cloudflare Radar 2021 年回顾