Karam Ibrahim Ответов: 2

Передавать изображение и datagridview на форму для отчета Crystal


Дорогие все, я ценю, если кто-то поможет мне решить мою проблему. У меня есть такая форма, как Export Form в приложении C# windows, и есть picture box и DataGridView. Я хочу отправить строки picture box и DataGridView в Crystal Report.

На самом деле, я могу передать и то, и другое, но изображение в одном отчете crystal и Datagridview в другой отчет Crystal. но когда я собрал в одном кристалле отчет, он показал мне ошибку. Ошибка, которая отображается жирным шрифтом.

Я буду признателен, если кто-нибудь мне поможет.

Вот мой код:

Что я уже пробовал:

//Picture Code
            ApplicationDataSet ApplicationInvoiceDataSet = new ApplicationDataSet();
            ExportInvoiceCrystal ExportInvoiceInfo = new ExportInvoiceCrystal();
            System.IO.MemoryStream SIMS = new System.IO.MemoryStream();

            #region Image
            ExportInvoiceImage.Image.Save(SIMS, ExportInvoiceImage.Image.RawFormat);
            byte[] ExportByte = new byte[0];
            ExportByte = SIMS.ToArray();
            ApplicationInvoiceDataSet.ImageDataTable.Rows.Add(ExportByte);       
  ExportInvoiceInfo.SetDataSource(ApplicationInvoiceDataSet.Tables["ImageDataTable"]);

// ========================================================

// DataGridView Code

            DataSet DataGridDataSet = new DataSet();
            DataTable DataGridDataTable = new DataTable();
            DataGridDataTable.Columns.Add("ItemNo", typeof(Int64));
            DataGridDataTable.Columns.Add("ItemName", typeof(string));
            DataGridDataTable.Columns.Add("ItemQuantity", typeof(Int64));
            DataGridDataTable.Columns.Add("ItemPrice", typeof(double));
            DataGridDataTable.Columns.Add("ItemTotal", typeof(double));
            foreach (DataGridViewRow DataGridRows in DataGridExportItem.Rows)
            {
                DataGridDataTable.Rows.Add(DataGridRows.Cells[0].Value, 
                DataGridRows.Cells[1].Value, DataGridRows.Cells[2].Value, 
                DataGridRows.Cells[3].Value, DataGridRows.Cells[4].Value);
            }
            DataGridDataSet.Tables.Add(DataGridDataTable);
            DataGridDataSet.WriteXmlSchema("ApplicationDataGrid.xml");
            ExportInvoiceInfo.SetDataSource(DataGridDataSet);

2 Ответов

Рейтинг:
14

Maciej Los

Вы не можете установить несколько таблиц данных или наборов данных в качестве источника для crystal report, но... вы можете пройти один DataSet. Видеть:

//Picture Code
//... your code here...
//Note: do not use SetDataSource yet!

//DataGridView Code
//... your code here...
//finally
//ApplicationInvoiceDataSet contains ["ImageDataTable"] already
//add DataGridView data
ApplicationInvoiceDataSet.Tables.Add(DataGridDataTable);
ExportInvoiceInfo.SetDataSource(ApplicationInvoiceDataSet);


Для получения более подробной информации, пожалуйста, смотрите: Создание кристаллического отчета с несколькими таблицами в ASP.NET[^]


Рейтинг:
0

Karam Ibrahim

Спасибо, дорогая, я решил свою проблему


Maciej Los

Всегда пожалуйста.

Это не ответ. Пожалуйста, удалите его, чтобы избежать понижения голоса.