我正在尝试使用我传递给report.rdlc的业务对象。我的对象中的属性不会直接暴露。我需要的属性嵌入在顶级对象内的另一个对象中。由于这是一个WCF项目,我无法控制服务器端发生的事情。我只能从数据库中请求这些对象或插入/更新/删除它们的信息。它以这种方式完成,因为后端可以使用多种口味的数据库。
将业务对象添加为DataSource
后,我可以看到以下内容:
-BusinessObject
-CustomerInfo
-ClientName
-ColumnName
-DisplayName
-FieldName
-IsNull
-KeyColumn
-SenondKeyColumn
-StringValue
-ClientID
-ColumnName
-DisplayName
-FieldName
-IntValue
-IsNull
-KeyColumn
-SenondKeyColumn
+ClientAddress
+Instrument
+Telephone
等等
我需要能够显示例如ClientName.StringValue
字段。
如果我将我想要的字段拖到我得到的报告上:
=First(Fields!StringValue.Value)
当报表运行时,这不显示任何内容,我假设因为它无法限定它正在谈论的StringValue
,并且可能有很多。
如果我尝试拖动我得到的ClientName
对象:
=First(Fields!ContactName.Value)
然而,这给出了:
#ERROR
报告运行时。
我原以为你可以使用:
=First(Fields!ClientName.StringValue.Value)
但这甚至不能让我建立。
答案 0 :(得分:1)
问题是信息不在根级别。我虽然解决了这个问题。
=First(Fields!ClientName.Value.StringValue, "BusinessObject_CustomerInfo")
我对ReportViewer组件的控制非常好,现在欢呼。
答案 1 :(得分:0)
如果将数据源设置为从服务返回的CustomerInfo实例(或列表),它应该可以工作。当您开始处理对象层次结构时,ReportViewer控件可能会有点复杂,但如果所有信息都在根级别,您不必做任何疯狂或特殊的事情。