none
Image dans une DataTable/GridView

    Discussion générale

  • Bonjour, 

    Je suis en train de programmer une GridView qui dépend d'une DataTable remplie dynamiquement par quelques fonctions. 
    Mon problème réside dans l'ajout d'une image. J'aimerais que sur une certaine condition l'image soit affichée. J'ai essayé : 

    DataTable data = new DataTable();
    data.Columns.AddRange(new DataColumn[2] { new DataColumn("Texte", typeof(string)), new DataColumn("Image", typeof(Image))});
    
    Image img = new Image();
    img.ImageUrl="/monimage.png";
    
    if (macondition)
    {
       data.Rows.Add("Erreur", img); 
    }
    else
    { 
       data.Rows.Add("OK"); 
    }
    Mais la GridView m'affiche le type de l'image 'System.Web.UI.WebControls.Image' au lieu de l'image elle-même !

    Par quoi devrais-je passer ? 
     
    mardi 12 juillet 2016 09:45

Toutes les réponses

  • Bonjour,

    La colonne en question est bien de type ImageField ?

    Cordialement

    mardi 12 juillet 2016 11:46
  • Je travaillais avec le type Image, je viens d'essayer avec ImageField mais ça ne change pas grand chose, ça n'affiche juste aucune image.
    mardi 12 juillet 2016 12:02
  • Je vois, je parlais du GridView. Mais si vous souhaitez ajouter une image dans votre DataTable, il faut créer une colonne de tableaux de Bytes et ainsi convertir votre image en Byte[] et l'attribuer à la colonne :

    DataTable table = new DataTable();
    
    DataColumn column = new DataColumn("MyImage");
    column.DataType = System.Type.GetType("System.Byte[]"); 
    
    column.AllowDBNull = true;
    column.Caption = "My Image";
    
    table.Columns.Add(column);

    et ainsi votre nouvelle ligne :

    DataRow row = table.NewRow();
    row["MyImage"] = // ici attribuer l'image sous forme de Byte []
    tables.Rows.Add(row);

    Il faut donc que vous convertissiez votre Image en Byte[] : lien.

    Cordialement,

    mardi 12 juillet 2016 12:45
  • Là c'est un tout autre problème, quand je veux définir l'image le FromFile ne trouve pas l'image (même avec le chemin absolu).

    mardi 12 juillet 2016 15:29
    1. Ajoute une ou des images dans Resources.resx (propriété du projet, ressources)
    2. Ajoute une DataGridViewImageColumn dans ta DataGridView
    3. Pour ajouter l'image ou les images, par exemple dans l'évèement DataBindingComplete de ta datagridview:

      for (int row = 0; row <= YourDataGridViewName.Rows.Count - 1; row++)
      {
          ((DataGridViewImageCell)YourDataGridViewName.Rows[row].Cells[1]).Value = Properties.Resources.Picture1
      }

    jeudi 14 juillet 2016 10:04
  • Je suis sur une web application, DataGridViewImageCell se trouve du côté de Windows.Forms pas dans Windows.Web.UI
    vendredi 15 juillet 2016 14:28