如何解决通过ViewModel和字符串类型Image Property将图像动态绑定到Crystal Report
我在一个视图模型中加入了3个表(Employee,Department,Designation)。并跟踪BLL,DAL模式是asp.net。
我的问题是我想根据单个雇员的唯一EmployeeId生成单个雇员的报告。 我设法以某种方式检索了除图片以外的每位员工的信息。 图像已设置为数据库,作为图像位置
EmployeeReportVM.cs
public class EmployeeReportVM
{
public string Image { get; set; }
public string EmployeeName { get; set; }
public string EmployeeId { get; set; }
public string Department { get; set; }
public string Designation { get; set; }
public string Grade { get; set; }
public string BloodGroup { get; set; }
public string Phone { get; set; }
public string JoiningDate { get; set; }
}
EmployeeDAL.cs
public List<EmployeeReportVM> EmployeeReport(string employeeId)
{
var emp = (from e in db.Employees
join de in db.Designation on e.DesignationId equals de.DesignationId
join dp in db.Department on e.DepartmentId equals dp.DepartmentId
where e.EmployeeId == employeeId
select new EmployeeReportVM
{
Image = e.Image,EmployeeName = e.FirstName + " " + e.LastName,EmployeeId = e.EmployeeId,Department = dp.DepartmentName,Designation = de.DesignationName,Phone = e.MobileNo
}).ToList();
return emp;
}
EmployeBLL.cs
EmployeeDAL employeeDal = new EmployeeDAL();
public List<EmployeeReportVM> EmployeeReportVM(string employeeId)
{
var data = employeeDal.EmployeeReport(employeeId);
return data;
}
EmployeeController.cs
EmployeeBLL employeeBll=new EmployeeBLL();EmployeeBLL employeeBll=new EmployeeBLL();
public ActionResult DownloadEmployeeReport(string employeeId)
{
//ApplicationDbContext db = new ApplicationDbContext();
var data = employeeBll.EmployeeReportVM(employeeId);
ReportDocument rd = new ReportDocument();
rd.Load(Path.Combine(Server.MapPath("~/Reports"),"EmployeeReport.rpt"));
rd.SetDataSource(data.Select(c => new
{
Image = c.Image,EmployeeName = c.EmployeeName,EmployeeId = c.EmployeeId,Department = c.Department,Designation = c.Designation
}).Where(x => x.EmployeeId == employeeId));
//string pathString = Path.Combine(@"D:\Sayeem\Project\NassaHRMS\Content\Images");
Response.Buffer = false;
Response.ClearContent();
Response.ClearHeaders();
rd.PrintOptions.PaperOrientation = CrystalDecisions.Shared.PaperOrientation.Landscape;
rd.PrintOptions.ApplyPageMargins(new CrystalDecisions.Shared.PageMargins(5,5,5));
rd.PrintOptions.PaperSize = CrystalDecisions.Shared.PaperSize.PaperA5;
//rd.SetDatabaseLogon("root","","NassaHRMS","DESKTOP-PN96TKB");
Stream stream = rd.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat);
stream.Seek(0,SeekOrigin.Begin);
return File(stream,"application/pdf","EmployeeDetails.pdf");
}
EmployeeList.cshtml
@using (Html.BeginForm("Edit","Account",new { id = @item.EmployeeId },FormMethod.Post,new { enctype = "multipart/form-data" }))
{
<a class="btn btn-sm btn-outline-info" target="_blank" href="@Url.Action("DownloadEmployeeReport","Employee",new { @employeeId = item.EmployeeId})"><i class="fa fa-print" title="Print Card"></i></a>
}
水晶报表的位置 enter image description here
解决方法
我想您在这里所做的一切都正确。 picture2
图形位置中仅有一些问题。您的数据库映像列包含什么?如果它仅包含图像名称,例如someimage.jpg
,则您的图形位置应如下所示。
D:\Sayeem\Project\NassaHRMS\EmployeeImage\ + NassaHRMS_ViewModels_EmployeeReportVM.Image
如果它包含Physical Path
之类的完整D:\Sayeem\Project\NassaHRMS\EmployeeImage\someimage.jpg
,则您的图形位置应如下所示
NassaHRMS_ViewModels_EmployeeReportVM.Image
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。