powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / Как создать отчет "главный-детальный" в ReportViewer
8 сообщений из 8, страница 1 из 1
Как создать отчет "главный-детальный" в ReportViewer
    #36501467
kmaw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
C#. WinFrm. Имеется список объектов List<MyObject>. MyObject имеет свойство List<MyObjectItem>. Как создать отчет типа

Объект 1
--Итем 11
--Итем 12
Объект 2
--Итем 21
--Итем 22

Спасибо
...
Рейтинг: 0 / 0
Как создать отчет "главный-детальный" в ReportViewer
    #36502385
kmaw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не знаю как вывести список List<MyObjectItem>
...
Рейтинг: 0 / 0
Как создать отчет "главный-детальный" в ReportViewer
    #36502446
rumka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А в чем проблема?В организации master-detail отчета?
...
Рейтинг: 0 / 0
Как создать отчет "главный-детальный" в ReportViewer
    #36502687
kmaw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да - только мастер и детаил в одной коллекции
...
Рейтинг: 0 / 0
Как создать отчет "главный-детальный" в ReportViewer
    #36502763
kmaw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
код такой:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
public partial class FormPrint : Form
    {
        string errorMsg;
        List<DoctorAdmission> listDoctorAdmission;
        public FormPrint()
        {
            ...
            DoctorAdmissionBindingSource.DataSource = listDoctorAdmission;

            bindingSourceDoctorAdmissionItem.DataSource = DoctorAdmissionBindingSource.Current;
            
            reportViewerAdmission.LocalReport.SubreportProcessing += new SubreportProcessingEventHandler(LocalReport_SubreportProcessing);
            
        }

        


        void LocalReport_SubreportProcessing(object sender, SubreportProcessingEventArgs e)
        {
            e.DataSources.Add(new ReportDataSource("DoctorAdmissionItem", ((DoctorAdmission)bindingSourceDoctorAdmissionItem.Current).ListAdmission));
        }
        

        private void FormPrint_Load(object sender, EventArgs e)
        {
           
           
            
            this.reportViewerAdmission.RefreshReport();
        }


При перемещении по записям при помощи панели навигации ListAdmission не перепривязывается. То есть подчинённый список все время один и тотже. вот в этом проблема
...
Рейтинг: 0 / 0
Как создать отчет "главный-детальный" в ReportViewer
    #36504098
rumka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну можно попробовать создать типизированный датасет такой же структуры,добавить его в твой report,сделать связку master-detail по ключу,а программно просто заполнить его твоими List.
И report сам будет подставлять значение в detail.
...
Рейтинг: 0 / 0
Как создать отчет "главный-детальный" в ReportViewer
    #36504103
kmaw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
такие примеры я видел тут
но мне не хочется создавать датасеты и их заполнять - это двойная работа - хочется строить отчет именно на основе моей коллекции. к тому же "мастер" строится без проблем, "детаил" тоже строится, но пока не знаю как его правильно привязать к "мастер"
...
Рейтинг: 0 / 0
Как создать отчет "главный-детальный" в ReportViewer
    #36504284
kmaw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пришлось сделать так: ввести новый класс, в которм добавить свойство DoctorAdmissionID - "вторичный ключ" - в моём случае явно избыточная фигня - только для соответсвия реляционной модели

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
void LocalReport_SubreportProcessing(object sender, SubreportProcessingEventArgs e)
        {
            List<DoctorAdmissionItemRel> listDoctorAdmissionItemRel = new List<DoctorAdmissionItemRel>();
            
            foreach(DoctorAdmission da in DoctorAdmissionBindingSource.List)
            {
                foreach (DoctorAdmissionItem dai in da.ListAdmission)
                {
                    listDoctorAdmissionItemRel.Add(new DoctorAdmissionItemRel(dai.AdmissionPacient.PersonData + " ["+dai.AdmissionPacient.PoliceNumber+"]", dai.DateTimeAdmission.ToString(), da.ID));
                }
            }
            
            
            e.DataSources.Add(new ReportDataSource("DoctorAdmissionItem", listDoctorAdmissionItemRel));
        }

работает, но я нахожу это решение кривым. как обойтись без "первичный ключ"="вторичный ключ"?
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / Как создать отчет "главный-детальный" в ReportViewer
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]