我的asp.net应用程序有一个报告,显示有关给定足球运动员的信息。当我尝试在asp.net页面上显示表格数据时,即使其他信息都显示,照片也不会显示。如何正确显示图像?
我将照片存储为byte[]..
,并在数据集中填写报告。我还添加了一个名为Photo
的字段,其类型为System.Byte[]
。
我将对象拖放到我的应用中:
我知道我没有发送空数据,因为字节数组明显在我的数据库中,它返回一个完整的对象。
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;
}
}
}
答案 0 :(得分:2)
因此,如果您的数据库图片存储不正确且CR无法绑定它们,请使用DataTable绑定您的报告。
编辑: 嗯,我只是看到你在pageheader中设置你的照片属性,所以它不能工作!使用您的类的其他属性将其移动到DetailSection,并在PageHeader中添加一个文本字段,其中包含" Photo"书面。
第二次编辑: 我有几个问题可以帮助您:在CR加载之前,您是否设置了断点以查看DataTable / dataSet中的数据?而且恰恰是dataType和数据。 你在预览中看到了图像吗? 你在数据库中检查了你的图像编码吗?问题可能就在这里,CR没有正确解释编码数据。我用Google搜索了这个问题,我看到的所有问题都是db或解码部分的编码。
您是否尝试使用DataBind?
CrystalReportViewer1.ReportSource = RPT;
CrystalReportViewer1.DataBind();
在您编辑的代码背后,我不明白您在这里做了什么,为什么不直接在数据集中从您的数据库中选择*?为什么要存储在var player
?这里的数据类型可能会出错,因此您的图像无法加载。
答案 1 :(得分:1)
谢谢你的帮助伙伴,我很感激,我昨晚解决了错误,问题非常愚蠢,在报道中我从DataTable属性拖拉,名为Photo没有改为system.byte []甚至如果我在dataTable上从dataTableSet更改它,不知何故它没有刷新它仍然保持为字符串所以我的图像无法加载字符串类型的字段,所以我从数据库字段(数据库专家)中删除了DataTable并移动它回来了,再次拖动字段报告,一切都很顺利!
:)