如何动态传递参数到DevExpress XtraReports

 我来答
百度网友f4a0cfd0c
2019-10-18
知道答主
回答量:4
采纳率:0%
帮助的人:3363
展开全部
  • 1、xtraReport有两种类型的参数Parameter和datasource。关于parameter与datasource的区别

    • 1.1、如果您一个report之需要一份参数,那么可以直接使用Parameter,如果您想要传递一个List<object>那么只能使用数据源的方式传参

    • 1.2、如果使用Parameter的方式,report.Parameters[0].value = "xxx"就可以了,下面我们重点讨论使用数据源的方式

  • 2、怎样使用数据源传递List<object>

    • xtraReports参数支持IList接口的类型的参数,但是官方给出了答复List<dynamic>类型暂时不支持,所以List<Type>中的Type必须是存在的类型,您如果可以定义所有reports的参数的Type,就可以通过动态修改Type的类型实现动态参数了。

    • xtraReport参数支持数据链接,以及数据链接的查询结果DataSet。但是官方给出了答复。在序列化的时候,你所定义的数据链接类或者是DataSet,不会一起持久化。所以给xtraReport定义DataSet类型的参数的话,需要您自己额外写代码来保存每个xtraReport的参数

    • 而且DataSet的参数的访问方式为 TableName.PropertyName.这种类型的参数是没有办法随xtraReports一起保存的。使用DataSet可以实现,但是数据源参数无法保存。

  • 3、如何动态传递数据源类型参数给XtraReports

    • 如果你是devexpress19版,那么dev直接支持json类型的参数,免谈

    • 如果您是16版左右的,这里可以使用C#动态创建类来实现。List<Type>中的Type必须是存在的类型是么?那我就发现这个报表参数类型不存在就动态创建。

    • 怎么创建?参考:DynamicClass

      • 如果该xtraReport对应的参数再内存种不存在

      • Type @class = ClassFactory.Instance.Create(properties);

      • TypeDic[type] = @class;缓存类型信息

      • 直接使用List<dynamic> datasource作为数据源

      • List里面存放var instance = (dynamic)Activator.CreateInstance(@class);

      • 亲测可用

网易云信
2023-12-06 广告
UIkit是一套轻量级、模块化且易于使用的开源UI组件库,由YOOtheme团队开发。它提供了丰富的界面元素,包括按钮、表单、表格、对话框、滑块、下拉菜单、选项卡等等,适用于各种类型的网站和应用程序。UIkit还支持响应式设计,可以根据不同... 点击进入详情页
本回答由网易云信提供
无间KEG
推荐于2016-11-27 · TA获得超过119个赞
知道答主
回答量:156
采纳率:69%
帮助的人:65.9万
展开全部
1. 采用构造函数 具体用法: 在Report中 public partial class XtraReport1 : DevExpress.XtraReports.UI.XtraReport { private int test1; public Form1(int test1) { this.test1 = test1; InitializeComponent(); } } 调用Report int test1 = 1; XtraReport1 report = new XtraReport1(test1); report.Show(); 2.采用属性 具体用法: 在Report中 public partial class XtraReport1 : DevExpress.XtraReports.UI.XtraReport { public Form1() { InitializeComponent(); } private int test1; public int Test1 { set { test1 = value; } get { return test1; } } } 调用Report XtraReport1 report = new XtraReport1(); report .Test1 = 1; report.Show(); 3.采用DataSet传递参数 在报表设计界面中,从工具栏数据中拉入DataSet到界面中,选择非类型化数据集,然后给拉入的DataSet添加Table和Column。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式