Frage

In einigen Fällen ziehe ich die Arbeit mit benutzerdefinierten Objekte anstelle von stark typisierte Datasets und Datenzeilen. Es scheint jedoch, wie Microsoft Reporting (mit VS2005 enthalten) erfordert stark typisierte Datasets.

Gibt es eine Möglichkeit, meine eigenen Objekte zu verwenden, zu entwerfen und zu bevölkern Berichte?

War es hilfreich?

Lösung

fand ich die Antwort. Ja es ist möglich. Sie müssen nur ein benutzerdefiniertes Objekt als Datenquelle in Visual Studio hinzufügen.

http://www.gotreportviewer.com/objectdatasources/index.html

Andere Tipps

Ich konnte nie in Report Data Setup von meinem Projekt eines meiner eigenen POCOs wählen ein Modell für den Bericht zu sein - die angebliche ‚globale‘ Option in der Durchlauf nicht da war. So beenden ich die XML bearbeiten zu müssen, um die Art zu definieren und eine Nachahmung Datenquelle (die eigentlich nicht in meinem Projekt vorhanden ist).

ich ordnen Sie die Daten vom Typ Aies.Core.Model.Invoice.MemberInvoice den Bericht im Code

reportViewer.LocalReport.DataSources.Add(new ReportDataSource("MemberInvoice", new[] { invoice1 }));

Und die individuelle Definition lautet:

  <DataSources>
    <DataSource Name="MemberInvoice">
      <ConnectionProperties>
        <DataProvider>System.Data.DataSet</DataProvider>
        <ConnectString>/* Local Connection */</ConnectString>
      </ConnectionProperties>
      <rd:DataSourceID>3fe04def-105a-4e9b-99db-630c1f8bb2c9</rd:DataSourceID>
    </DataSource>
  </DataSources>
  <DataSets>
    <DataSet Name="MemberInvoice">
      <Fields>
        <Field Name="MemberId">
          <DataField>MemberId</DataField>
          <rd:TypeName>System.Int32</rd:TypeName>
        </Field>
        <Field Name="DateOfIssue">
          <DataField>DateOfIssue</DataField>
          <rd:TypeName>System.DateTime</rd:TypeName>
        </Field>
        <Field Name="DateDue">
          <DataField>DateDue</DataField>
          <rd:TypeName>System.DateTime</rd:TypeName>
        </Field>
        <Field Name="Amount">
          <DataField>Amount</DataField>
          <rd:TypeName>System.Decimal</rd:TypeName>
        </Field>
      </Fields>
      <Query>
        <DataSourceName>MemberInvoice</DataSourceName>
        <CommandText>/* Local Query */</CommandText>
      </Query>
      <rd:DataSetInfo>
        <rd:DataSetName>Aies.Core.Model.Invoice</rd:DataSetName>
        <rd:TableName>MemberInvoiceData</rd:TableName>
        <rd:ObjectDataSourceSelectMethod>GetInvoices</rd:ObjectDataSourceSelectMethod>
        <rd:ObjectDataSourceSelectMethodSignature>System.Collections.Generic.IEnumerable`1[Aies.Core.Model.Invoice.MemberInvoice] GetInvoices()</rd:ObjectDataSourceSelectMethodSignature>
        <rd:ObjectDataSourceType>Aies.Core.Model.Invoice.MemberInvoiceData, Aies.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</rd:ObjectDataSourceType>
      </rd:DataSetInfo>
    </DataSet>
  </DataSets>

Ich glaube, Sie SSRS einrichten können Datenwerte aus einer mehr oder weniger beliebiges Objekt zu lesen. Dieser Link beschreibt die IDataReaderFieldProperties Objekt in der API, die (IIRC) können Sie die Getter-Methode angeben aufzurufen Wert zu erhalten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top