Поля данных CrystalReports все пусты - PullRequest
1 голос
/ 19 июня 2019

Я использую VS сообщество 2017 и sp25 CrystalReports.

Я создал программу, которая должна отображать данные из объекта List в окно CrystalReport. Вот список классов:

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace AgricoveBilling
{
    public class reporter : IEnumerable<reporter>
    {
        public string InvoiceNo { get; set; }
        public string InvoiceDt { get; set; }
        public string DueDt { get; set; }
        public string BillToName { get; set; }
        public string BillToAdd { get; set; }

        public string ItemID1Name { get; set; }
        public decimal ItemID1Price { get; set; }
        public decimal ItemID1Qty { get; set; }
        public decimal ItemID1Total { get; set; }
        public string ItemID2Name { get; set; }
        public decimal ItemID2Price { get; set; }
        public decimal ItemID2Qty { get; set; }
        public decimal ItemID2Total { get; set; }
        public string ItemID3Name { get; set; }
        public decimal ItemID3Price { get; set; }
        public decimal ItemID3Qty { get; set; }
        public decimal ItemID3Total { get; set; }
        public string ItemID4Name { get; set; }
        public decimal ItemID4Price { get; set; }
        public decimal ItemID4Qty { get; set; }
        public decimal ItemID4Total { get; set; }
        public string ItemID5Name { get; set; }
        public decimal ItemID5Price { get; set; }
        public decimal ItemID5Qty { get; set; }
        public decimal ItemID5Total { get; set; }
        public string ItemID6Name { get; set; }
        public decimal ItemID6Price { get; set; }
        public decimal ItemID6Qty { get; set; }
        public decimal ItemID6Total { get; set; }
        public string ItemID7Name { get; set; }
        public decimal ItemID7Price { get; set; }
        public decimal ItemID7Qty { get; set; }
        public decimal ItemID7Total { get; set; }
        public string ItemID8Name { get; set; }
        public decimal ItemID8Price { get; set; }
        public decimal ItemID8Qty { get; set; }
        public decimal ItemID8Total { get; set; }
        public string ItemID9Name { get; set; }
        public decimal ItemID9Price { get; set; }
        public decimal ItemID9Qty { get; set; }
        public decimal ItemID9Total { get; set; }
        public string ItemID10Name { get; set; }
        public decimal ItemID10Price { get; set; }
        public decimal ItemID10Qty { get; set; }
        public decimal ItemID10Total { get; set; }
        public string ItemID11Name { get; set; }
        public decimal ItemID11Price { get; set; }
        public decimal ItemID11Qty { get; set; }
        public decimal ItemID11Total { get; set; }

        public decimal Subtotal { get; set; }
        public string DiscountType { get; set; }
        public decimal DiscountValue { get; set; }
        public decimal SubtotalLessDiscount { get; set; }
        public decimal TaxRate { get; set; }
        public decimal Totaltax { get; set; }
        public decimal GrossTotal { get; set; }
        public decimal Paid { get; set; }
        public decimal Due { get; set; }

        public IEnumerator<reporter> GetEnumerator()
        {
            throw new NotImplementedException();
        }

        IEnumerator IEnumerable.GetEnumerator()
        {
            throw new NotImplementedException();
        }
    }
}

Я установил класс репортера как источник данных

Форма, в которую встроен CrystalReportViewer, имеет следующий код:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using CrystalDecisions.CrystalReports.Engine;

namespace AgricoveBilling
{
    public partial class Printpreview : Form
    {
        List<reporter> rep;
        public Printpreview(List<reporter> r)
        {
            InitializeComponent();
            rep = r;      
        }

        private void Printpreview_Load(object sender, EventArgs e)
        {
            ReportDocument rpt = new ReportDocument();
            rpt.Load(@"..\printform.rpt");
            rpt.SetDataSource(rep);
            print_crystalreport.ReportSource = rpt;            
            print_crystalreport.Zoom(55);
            print_crystalreport.Refresh();

        }
    }
} 

Нет ошибок. Используя QuickWatch, я проверил, что все объекты C # загружаются правильно. Я знаю, что загружается правильный файл rpt, потому что текстовые объекты в отчете верны.

Но в отчете нет абсолютно никаких данных.

Я буду честен: я не знаю, как CrystalReports связывает правильные поля с правильными данными. Я должен был написать код, чтобы сделать это где-нибудь?

Я пытался изменить iEnumerable на обычный класс, но затем во время SetDataSoruce мне сказали, что объект является недопустимым источником данных. Я пытался использовать SetParamerterValue вручную, но я получаю ошибку Badindex таким образом. Я убедился, что имя параметра указано правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...