استخدام الكائنات المخصصة كمصدر لتقارير Microsoft (.rdlc)

StackOverflow https://stackoverflow.com/questions/126863

  •  02-07-2019
  •  | 
  •  

سؤال

في بعض الحالات، أفضل العمل باستخدام كائنات مخصصة بدلاً من مجموعات البيانات وصفوف البيانات المكتوبة بقوة.ومع ذلك، يبدو أن Microsoft Reporting (المضمن مع VS2005) يتطلب مجموعات بيانات مكتوبة بقوة.

هل هناك طريقة لاستخدام الكائنات المخصصة الخاصة بي لتصميم التقارير وتعبئتها؟

هل كانت مفيدة؟

المحلول

لقد وجدت الجواب.انه من الممكن.عليك فقط إضافة كائن مخصص كمصدر بيانات في الاستوديو المرئي.

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

نصائح أخرى

لم أتمكن مطلقًا من اختيار أحد عناصر POCO الخاصة بي في إعداد بيانات التقرير من مشروعي ليكون نموذجًا للتقرير - الخيار "العالمي" المزعوم المذكور في تجول لم يكن هناك.لذلك انتهى بي الأمر إلى تعديل ملف XML لتحديد النوع ومصدر بيانات مقلد (والذي لا يوجد بالفعل في مشروعي).

أقوم بتعيين بيانات النوع Aies.Core.Model.Invoice.MemberInvoice للتقرير في الكود

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

والتعريف المخصص هو:

  <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>

أعتقد أنه يمكنك إعداد SSRS لقراءة قيم البيانات من كائن تعسفي إلى حد ما. هذا الرابط يصف كائن IDataReaderFieldProperties في واجهة برمجة التطبيقات والذي يسمح لك (IIRC) بتحديد طريقة getter لاستدعائها للحصول على قيمة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top