Mon application asp.net a un rapport qui affiche des informations sur un joueur de football donné. Lorsque j'essaie d'afficher les données du tableau sur la page asp.net, la photo ne s'affiche pas même si le reste des informations le fait. Comment faire pour que l'image s'affiche correctement ?

Je stocke la photo en tant que byte[].. et sur le jeu de données, je remplis le rapport. J'ai également ajouté un champ appelé Photo avec le type System.Byte[].

Section 2

J'ai glissé et déposé l'objet depuis mon application :

enter image description here

Je sais que je n'envoie pas de données vides car le tableau d'octets est clairement dans ma base de données et il renvoie un objet entier.

enter image description here

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
user6067265 26 juin 2016 à 19:34

2 réponses

Meilleure réponse

Merci pour votre aide, j'apprécie cela, j'ai résolu l'erreur hier soir et le problème était très stupide, dans le champ du rapport que je fais glisser et dépose de l'attribut DataTable appelé Photo n'a pas changé en system.byte[] même si j'ai changé sur dataTable de mon dataTableSet, d'une manière ou d'une autre, il ne s'est pas actualisé et il est resté immobile sous forme de chaîne afin que mon image ne puisse pas se charger sur le champ de type chaîne. champs à nouveau à signaler et tout s'est bien passé!

:)

1
user6067265user6067265 28 juin 2016 à 21:07

J'espère que cela pourra t'aider : http://www.aspsnippets.com/Articles/Display-image-from-database-in-Crystal-Report-in-ASPNet-using-C-and-VBNet.aspx

Utilisez donc un DataTable pour lier votre rapport, au cas où les images de votre base de données ne seraient pas stockées correctement et que CR ne pourrait pas les lier.

EDIT : Hum, je viens de voir que tu as mis ton attribut photo dans l'entête de page donc ça ne peut pas fonctionner ! Déplacez-le dans le DetailSection avec l'autre attribut de votre classe et dans le PageHeader ajoutez simplement un champ de texte avec "Photo" écrit.

DEUXIÈME EDIT : J'ai plusieurs questions pour vous aider : Avez-vous défini un point d'arrêt pour voir les données dans votre DataTable/dataSet avant le chargement CR ? Et précisément le dataType et les données. Voyez-vous l'image dans l'aperçu ? As-tu vérifié l'encodage de ton image dans la base de données ? Le problème pourrait être juste ici, les données d'encodage ne sont pas correctement interprétées par CR. J'ai googlé ce problème pour vous et tous les problèmes que j'ai vus étaient l'encodage dans la base de données ou la partie de décodage.

As-tu essayé avec un DataBind ?

CrystalReportViewer1.ReportSource = RPT;
CrystalReportViewer1.DataBind();

Dans votre code édité derrière je ne comprends pas ce que vous faites ici, pourquoi pas un select * de votre db directement dans votre dataset ? Pourquoi stocker en var player ? le type de données peut mal tourner ici et votre image ne peut pas être chargée à cause de cela.

2
Furtiro 28 juin 2016 à 09:37