Как отобразить изображение в отчете RDLC, когда в базе данных сохранено только имя изображения?

Я сохраняю имя изображения только в базе данных, фактическое изображение сохраняется в каталоге проекта «SiteImages».

Теперь я хочу отобразить изображение в отчете RDLC, но не отображать его. КОД:

public void Fill_AuditsReport()
{
    ReportViewer1.AsyncRendering = false;
    ReportViewer1.SizeToReportContent = true;
    ReportViewer1.ZoomMode = ZoomMode.FullPage;
    this.ReportViewer1.Reset();

    DataTable dt = new DataTable();
    PersonalInfo.ManagePersonalInfo MngPersonalInfo = new PersonalInfo.ManagePersonalInfo();

    dt = MngPersonalInfo.ReportSelectPersonalInfo();

    ReportViewer1.ProcessingMode = ProcessingMode.Local;
    ReportViewer1.LocalReport.ReportPath = Server.MapPath("~/DataManagementReports/Report.rdlc");
    ReportDataSource rpds = new ReportDataSource("DataSetPersonalInfo", dt);
    ReportViewer1.LocalReport.DataSources.Clear();
    ReportViewer1.LocalReport.DataSources.Add(rpds);
    ReportViewer1.Visible = true;
}

имя поля в базе данных — PersonalInfoEmployeePicture.


person Juventus tech    schedule 12.11.2015    source источник


Ответы (1)


Добавьте в свой проект следующий код:

ReportViewer1.LocalReport.EnableExternalImages = true;
string FilePath = @"file:\" + Application.StartupPath + "\\" + "SiteImages\\"; //Application.StartupPath is for WinForms, you should try AppDomain.CurrentDomain.BaseDirectory  for .net
ReportParameter[] param = new ReportParameter[1];
param[0] = new ReportParameter("ImgPath", FilePath);
ReportViewer1.LocalReport.SetParameters(param);

Затем в дизайнере отчетов убедитесь, что элемент Image имеет свойство источника изображения, установленное на External, и у вас есть параметр с правильным именем (ImgPath). Затем просто определите выражение, которое указывает на правильное изображение. (Это будет зависеть от того, как вы сохранили имя изображения в базе данных, с нашим без расширения, я предполагаю, что вы добавили расширение)

= Parameters!ImgPath.Value + Fields!PersonalInfoEmployeePicture.Value
person Oceans    schedule 12.11.2015
comment
Тогда приведенное выше выражение должно быть правильным, если FilePath правильный. - person Oceans; 12.11.2015
comment
Я получаю сообщение об ошибке в SetParameters и StartUpPath. Не содержит определения для указанных методов - person Juventus tech; 12.11.2015
comment
Строка FilePath должна в основном иметь расположение папки с изображением, так как по причине сбоя SetParameters я забыл упомянуть, что вам нужно будет создать параметр ImgPath в дизайнере. - person Oceans; 12.11.2015
comment
да, сэр, но проблема в том, что я получаю сообщение об ошибке в StartUpPath и SetParameters, что-то вроде КРАСНОЙ ПОДЧЕРКИВАНИЯ. - person Juventus tech; 12.11.2015
comment
Application.StartupPath работает только в формах win, попробуйте AppDomain.CurrentDomain.BaseDirectory для корневого каталога вашего проекта. Вы также можете просто определить точное имя пути, если вы его знаете. А что касается второй ошибки, попробуйте ReportViewer1.LocalReport.SetParameters(param)my bad - person Oceans; 12.11.2015
comment
Вы можете подключиться к Team Viewer на минуту? у меня очень сжатые сроки и я буду вам благодарен - person Juventus tech; 12.11.2015
comment
Большое спасибо, это сделано, я оставил эту часть параметров, и когда я последовал за вами, это сработало. - person Juventus tech; 12.11.2015