图像不显示在报告中
Image does not display in report
我的 asp.net 应用程序有一份报告,显示有关给定足球运动员的信息。当我尝试在 asp.net 页面上显示 table 数据时,尽管显示了其余信息,但照片并未显示。如何才能让图片正确显示?
我将照片存储为 byte[]..
并在数据集上填写报告。我还添加了一个名为 Photo
的字段,类型为 System.Byte[]
.
我将对象从我的应用程序拖放到:
我知道我不会发送空数据,因为字节数组显然在我的数据库中并且它 returns 是一个完整的对象。
public partial class PlayersReport : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
var x = Server.MapPath("~");
int playerID = Convert.ToInt32(Request.QueryString["playerID"]);
PlayersDataSet players = new PlayersDataSet();
PlayersDataSet.PlayersTableDataTable PlayersDT = new PlayersDataSet.PlayersTableDataTable();
var player = eSavez_Servis.Data.Services.DAPlayers.GetByPlayerId(playerID);
PlayersDT.AddIgraciTableRow(player.FirstName, player.LastName, player.ClubNumber, player.ClubName, player.Photo, player.IDNumber.ToString());
players.Tables["PlayersTable"].Merge(PlayersDT);
rpt_Players RPT = new rpt_Players();
RPT.SetDataSource(players);
CrystalReportViewer1.ReportSource = RPT;
}
}
}
所以用一个DataTable来绑定你的report,以防你的db的图片存储不当导致CR无法绑定。
编辑:
嗯,我只是看到你在页眉中设置了你的照片属性,所以它不能工作!将它移动到具有 class 的其他属性的 DetailSection,并在 PageHeader 中添加一个文本字段,其中写有 "Photo"。
第二次编辑:
我有几个问题可以帮助您:在 CR 加载之前,您是否设置了断点以查看 DataTable/dataSet 中的数据?准确地说是数据类型和数据。
你在预览中看到图像了吗?
你检查过数据库中的图像编码了吗?问题可能就在这里,编码数据没有被 CR 正确解释。我用谷歌搜索了这个问题,我看到的所有问题都是数据库中的编码或解码部分。
您尝试使用 DataBind 了吗?
CrystalReportViewer1.ReportSource = RPT;
CrystalReportViewer1.DataBind();
在你后面编辑的代码中我不明白你在这里做什么,为什么不直接从你的数据库中的 select * 在你的数据集中?为什么存储在 var player
中?此处的数据类型可能出错,因此无法加载您的图像。
谢谢你的帮助,伙计,我很感激,我昨晚解决了错误,问题很愚蠢,在报告的字段中,我从名为 Photo 的 DataTable 属性中拖放并没有更改为 system.byte[] 即使我在 dataTable 上从我的 dataTableSet 更改了它,它也不会以某种方式刷新并且它仍然作为字符串保持不变,因此我的图像无法加载到字符串类型的字段上,所以我从数据库字段中删除了 DataTable(数据库专家)并将其移回,并再次拖动字段进行报告,一切顺利!
:)
我的 asp.net 应用程序有一份报告,显示有关给定足球运动员的信息。当我尝试在 asp.net 页面上显示 table 数据时,尽管显示了其余信息,但照片并未显示。如何才能让图片正确显示?
我将照片存储为 byte[]..
并在数据集上填写报告。我还添加了一个名为 Photo
的字段,类型为 System.Byte[]
.
我将对象从我的应用程序拖放到:
我知道我不会发送空数据,因为字节数组显然在我的数据库中并且它 returns 是一个完整的对象。
public partial class PlayersReport : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
var x = Server.MapPath("~");
int playerID = Convert.ToInt32(Request.QueryString["playerID"]);
PlayersDataSet players = new PlayersDataSet();
PlayersDataSet.PlayersTableDataTable PlayersDT = new PlayersDataSet.PlayersTableDataTable();
var player = eSavez_Servis.Data.Services.DAPlayers.GetByPlayerId(playerID);
PlayersDT.AddIgraciTableRow(player.FirstName, player.LastName, player.ClubNumber, player.ClubName, player.Photo, player.IDNumber.ToString());
players.Tables["PlayersTable"].Merge(PlayersDT);
rpt_Players RPT = new rpt_Players();
RPT.SetDataSource(players);
CrystalReportViewer1.ReportSource = RPT;
}
}
}
所以用一个DataTable来绑定你的report,以防你的db的图片存储不当导致CR无法绑定。
编辑: 嗯,我只是看到你在页眉中设置了你的照片属性,所以它不能工作!将它移动到具有 class 的其他属性的 DetailSection,并在 PageHeader 中添加一个文本字段,其中写有 "Photo"。
第二次编辑: 我有几个问题可以帮助您:在 CR 加载之前,您是否设置了断点以查看 DataTable/dataSet 中的数据?准确地说是数据类型和数据。 你在预览中看到图像了吗? 你检查过数据库中的图像编码了吗?问题可能就在这里,编码数据没有被 CR 正确解释。我用谷歌搜索了这个问题,我看到的所有问题都是数据库中的编码或解码部分。
您尝试使用 DataBind 了吗?
CrystalReportViewer1.ReportSource = RPT;
CrystalReportViewer1.DataBind();
在你后面编辑的代码中我不明白你在这里做什么,为什么不直接从你的数据库中的 select * 在你的数据集中?为什么存储在 var player
中?此处的数据类型可能出错,因此无法加载您的图像。
谢谢你的帮助,伙计,我很感激,我昨晚解决了错误,问题很愚蠢,在报告的字段中,我从名为 Photo 的 DataTable 属性中拖放并没有更改为 system.byte[] 即使我在 dataTable 上从我的 dataTableSet 更改了它,它也不会以某种方式刷新并且它仍然作为字符串保持不变,因此我的图像无法加载到字符串类型的字段上,所以我从数据库字段中删除了 DataTable(数据库专家)并将其移回,并再次拖动字段进行报告,一切顺利!
:)