找回密码
 立即注册

QQ登录

只需一步,快速开始

tonywang

注册会员

11

主题

42

帖子

147

积分

注册会员

积分
147

微信认证勋章

tonywang
注册会员   /  发表于:2016-6-2 19:11  /   查看:8995  /  回复:7
目前利用C1FlexReport制作报表。
需要动态的插入各种Field,如果一页摆放不下,需要换页。
但是对于C1FlexReport的换页机制不了解,一直以为是自动换页呢。
我的问题是:
1。对于换页的原理能否说明一下,如何触发换页?
2。如果不能触发,有否手动强制换页的方法?
3。动态添加Field,有没有什么高效的方法呢?

谢谢

7 个回复

倒序浏览
Alice
社区贡献组   /  发表于:2016-6-3 09:17:46
沙发
首先说下C1FlexReport可以用代码也可以用设计器来设计,你可以选择最合适自己的方法。

对于换页的问题不是很理解,你在设计时给页面添加很多的field,如果页面已经显示不下,你是需要设置更改页面的Size去适应让所有field显示。
换页是根据页面进行换页,如果页面过大,就会自动分页显示。

对于C1FlexReport,产品文档如下:
http://helpcentral.componentone.com/nethelp/FlexReport/
你可以对照学习。
如上。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
tonywang
注册会员   /  发表于:2016-6-3 10:14:38
板凳
本帖最后由 tonywang 于 2016-6-3 10:16 编辑

确实如你所说
会自动换页,但是结果不对。

我循环400次,实际报表上仅出现2百多个Field。截图和代码已上传,请参考。



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2016-6-3 12:10:11
地板
tonywang 发表于 2016-6-3 10:14
确实如你所说
会自动换页,但是结果不对。

根据您的Demo来看,您使用了subreportfield来创建子表。

更简单的方法可以使用设计器来设计flxr文件。
步骤:
1.创建主表
2.在主表添加subreportfield
3.添加子表
4.在子表上添加field。
5.保存文件
6.c1flexreport的load方法导入文件
在你的程序里调用简答的一句代码:
  1. objReportView.C1FlexReport1.Load(".\MergeCell.flxr", "MainReport")
复制代码


flxr文件如附件所示:

或是设计器打开MergeCell.flxr文件就可以看到效果(需要把数据源改成你本地数据源,路径:\Documents\ComponentOne Samples\Common)


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
tonywang
注册会员   /  发表于:2016-6-3 12:38:57
5#
本帖最后由 tonywang 于 2016-6-3 12:59 编辑

我目前的需求是:subreportfield的数量是根据数据库查询结果动态变化的。数量会变化!

而且,每一个subreportfield的输出位置,宽度,高度都会变化。
用设计器的话,不好实现。

所以,还是请你们看看我的Demo,帮我查查到底是什么原因导致输出不完整?

谢谢
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2016-6-3 13:58:17
6#
tonywang 发表于 2016-6-3 12:38
我目前的需求是:subreportfield的数量是根据数据库查询结果动态变化的。数量会变化!

而且,每一个subr ...

Demo里的用法是不对的。
即使是用code完成,和用设计器的逻辑是一致的。
subreport绑定到数据源,让Parameters中添加的Item和数据源里的字段一致。
就会自动的按照数据源显示数据的主子关系。

如果你要动态查询,你就修改绑定的数据源,就可以自动的更改。
如果字段本身也需要修改,就修改subreport的Parameters。

你可以参考我给的文件研究下,重新设计你的程序逻辑
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
tonywang
注册会员   /  发表于:2016-6-6 09:12:21
7#
谢谢你!
我按照Demo修改的程序逻辑,通过绑定数据源动态生成subreport


我希望在supreport绘制的时候,利用VBScript动态改变某个field的高度(比如当方格中显示为[CENTER]时,修改该Field的高度),应该在那个事件中实现?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2016-6-6 15:47:45
8#
tonywang 发表于 2016-6-6 09:12
谢谢你!
我按照Demo修改的程序逻辑,通过绑定数据源动态生成subreport

如果是想在代码中使用VBScript,可以使用GetScriptObject事件。
详细的可以参考产品示例,路径如下:
\Documents\ComponentOne Samples\WinForms\C1FlexReport\CS\AddScriptObject
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部