图像不显示在报告中

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;

    }
  }
}

希望对您有所帮助: http://www.aspsnippets.com/Articles/Display-image-from-database-in-Crystal-Report-in-ASPNet-using-C-and-VBNet.aspx

所以用一个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(数据库专家)并将其移回,并再次拖动字段进行报告,一切顺利!

:)