Вставьте неизвестное количество изображений в отчет во время выполнения с помощью Reportviewer - PullRequest
0 голосов
/ 10 января 2010

Я использую ReportViewer, и я хотел бы добавить неизвестное количество изображений в отчет во время выполнения. Пользователь должен выбрать несколько изображений (в другом месте), и эти изображения должны отображаться в отчете одно за другим. У вас есть идеи, как это сделать с помощью Reportviewer?

спасибо, Офир

Ответы [ 2 ]

0 голосов
/ 26 декабря 2016

Я сделал следующее, чтобы показать список изображений с неизвестным количеством элементов в матрице.

Сначала создайте набор данных только с одним полем, вы можете делать все, что захотите, я назвал его «filepath» и назвал набор данных «DataSet5». Вы можете изменить имя и использовать его соответственно.

Затем вам нужно добавить таблицу, удалить ненужные строки и столбцы, чтобы у вас осталась только 1 матрица столбцов и строк (1x1). Вставьте изображение в этот столбец, установите его свойства сейчас. Источник изображения должен быть ВНЕШНИМ.

В файле aspx.cs для отчета получите пути к изображениям из базы данных, теперь получите абсолютные пути к ним и добавьте «file: ///», так как отчеты требуют, чтобы файл отображался. Я сделал так:

string rel_Path = HttpContext.Current.Server.MapPath("~");
if (_articleOrders.Any())
    {
        foreach (ArticleOrder order in _articleOrders)
        {
            if (!string.IsNullOrEmpty(order.ArticleImage))
            {
                if (File.Exists(rel_Path + "\\" + order.ArticleImage))
                {
                    var AIpath = "file:///" + rel_Path + "\\" + order.ArticleImage;
                    articleImagesList.Add(AIpath);
                }
            }
        }
        CreateDatasetForImages(articleImagesList);
    }

Затем я добавил данные в набор данных, как показано ниже:

private void CreateDatasetForImages(List<string> articleImagesList)
{
    DataTable table = new DataTable();
    table.Columns.Add("filepath", typeof(string));

    foreach (string articleImage in articleImagesList)
    {
        DataRow drow = table.NewRow();
        string pat = articleImage;
        drow["filepath"] = pat;
        table.Rows.Add(drow);
    }
    FlowerBookingReportViewer.LocalReport.DataSources.Add(new ReportDataSource("DataSet5", table));
}

Теперь снова перейдите к свойствам изображения и установите для «Использовать это изображение» значение [filepath] в качестве имени столбца в нашем наборе данных, который содержит путь к изображению. Надеюсь, у кого-нибудь это сработает!

0 голосов
/ 14 января 2010

Есть много способов сделать это. Вот одна из возможностей:

Вам потребуется динамически настроить источник данных для отчета, этот пост в блоге поможет с этим.

В вашем наборе данных должна быть таблица с одним столбцом типа string.

В конструкторе отчетов (дважды щелкните файл rdlc), добавьте таблицу. Удалите столбцы, пока не останется один. В оставшейся ячейке добавьте изображение. Установите тип изображения для внешнего. Установите для src изображения выражение, которое является полем вашего набора данных.

Во время выполнения соберите все изображения, которые хочет пользователь. Эти изображения должны быть доступны для просмотра отчетов где-либо, в локальной файловой системе для средства просмотра WinForms или на сервере для средства просмотра WebForms. Затем настройте массив строк, содержащий пути к этим изображениям, в качестве источника данных отчета. В отчете будут использоваться эти строки для поиска изображений и добавления одного изображения для каждой предоставленной вами строки.

...