2

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)

しかし、これではビルドできません。

4

2 に答える 2

1

問題は、情報がルート レベルにないことでした。私はそれを解決しました。

=First(Fields!ClientName.Value.StringValue, "BusinessObject_CustomerInfo")

ReportViewer コンポーネントについてはかなりよく理解できました。

于 2008-11-08T14:04:53.060 に答える
0

サービスから返された CustomerInfo インスタンス (またはリスト) にデータ ソースを設定すると、機能するはずです。オブジェクト階層を扱い始めると、ReportViewer コントロールは少し複雑になる可能性がありますが、すべての情報がルート レベルにある場合は、おかしなことや特別なことをする必要はありません。

于 2008-11-05T16:23:30.690 に答える