none
Afficher le bon avatar depuis ma base.. RRS feed

  • Question

  • Salut à tous,

     Je suis en train de construire un site ( un Trombinoscope ) et je veux afficher un avatar pour chaque utilisateur enregistré dans la base de données et qui a déja fait entrer son image, pour cela j utilise un 'generic Handler' qui recupere l identifiant de la personne et grace à cette identifiant je recupere l image depuis ma base..

    mon probleme et le suivant : pour afficher l image de la personne qui a l identifiant 'x' je dois ajouter la balise <asp:Image ID="photo" runat="server"  ImageUrl='LA_SOURCE' Width="120" Height="120"/> telle que LA_SOURCE = " <~/Handler1.aspx?id=x"  (x = le  bon identifiant )

    dans la meme page .aspx je recupere cet identifiant grace à <%: Model.id %> simplement 

    <asp:Image ID="photo" runat="server" ImageUrl='<%# "~/Handler1.ashx?id=" Model.id %>' Width="120" Height="120"/> ou

    <asp:Image ID="photo" runat="server" ImageUrl='<%# "~/Handler1.ashx?id=" + Model.id.ToString() %>' Width="120" Height="120"/>

    ou meme <asp:Image ID="photo" runat="server" ImageUrl='<%# "~/Handler1.ashx?id=" + Eval(Model.id) %>' Width="120" Height="120"/> aboutissent tous à une erreur d affichage et la source est mal ecrite ( ecriture mal formaté )

    voici le code de mon Handler .ashx.cs :

    ///////////////////

    using System;

    using System.Collections.Generic;

    using System.Linq;

    using System.Web;

    using System.IO;

    using System.Data.SqlClient;

    using System.Data;

     

    namespace Trambinoscope

    {

        /// <summary>

        /// Summary description for Handler1

        /// </summary>

        public class Handler1 : IHttpHandler

        {

     

            public void ProcessRequest(HttpContext context)

            {

     

                Int32 empno;

                if (context.Request.QueryString["id"] != null)

                    empno = Convert.ToInt32(context.Request.QueryString["id"]);

                else

                    throw new ArgumentException("No parameter specified");

     

                context.Response.ContentType = "image/jpg";

     

                Stream strm = ShowEmpImage(empno);

                byte[] buffer = new byte[4096];

                int byteSeq = strm.Read(buffer, 0, 4096);

     

                while (byteSeq > 0)

                {

                    context.Response.OutputStream.Write(buffer, 0, byteSeq);

                    byteSeq = strm.Read(buffer, 0, 4096);

                }

     

            }

     

            public Stream ShowEmpImage(int empno)

            {

     

                string conn = @"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\Documents\Visual Studio 2010\Projects\Trambinoscope\Trambinoscope\App_Data\EspritDB.mdf;Integrated Security=True;User Instance=True";

                SqlConnection connection = new SqlConnection();

                connection.ConnectionString = conn;

                string sql = "SELECT photo FROM ESPRITS WHERE id = @id";

                SqlCommand cmd = new SqlCommand(sql, connection);

                cmd.CommandType = CommandType.Text;

                cmd.Parameters.AddWithValue("@id", empno);

                connection.Open();

                object img = cmd.ExecuteScalar();

                try

                {

                    return new MemoryStream((byte[])img);

                }

                catch

                {

                    return null;

                }

                finally

                {

                    connection.Close();

                }

            }

            public bool IsReusable

            {

                get

                {

                    return false;

                }

            } 

        }

    }

    ////////////////////////////

    Merci bien si vous pouvez m aider sur ce point !!!

     

    • Déplacé Alex Petrescu lundi 6 septembre 2010 09:38 asp.net (Origine :Développement .NET (en général))
    vendredi 27 août 2010 22:55

Réponses

  • En fait j'ai reussi à afficher l image grace à un gridview, chose que j ai voulu eviter, est ce que c est la seule solution envisageable ?

    j ai reussi a le faire avec un gridview qui comporte ce tag :

    <asp:Image ID="photo" runat="server" ImageUrl='<%# "~/Handler1.ashx?id="+ Model.id %>' Width="120" Height="120"/> 

     

    Pour le Repeater : Aucune idee - je suis presque novice !!

    • Marqué comme réponse Alex Petrescu lundi 6 septembre 2010 09:38
    jeudi 2 septembre 2010 23:23

Toutes les réponses

  • Bonjour,

    Est-ce que votre image se trouve dans un Repeater ?

    Cordialement


    Gilles TOURREAU - MVP C# - MCTS ADO .NET 3.5 - MCPD Windows Developper 3.5 - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    samedi 28 août 2010 09:38
    Modérateur
  • En fait j'ai reussi à afficher l image grace à un gridview, chose que j ai voulu eviter, est ce que c est la seule solution envisageable ?

    j ai reussi a le faire avec un gridview qui comporte ce tag :

    <asp:Image ID="photo" runat="server" ImageUrl='<%# "~/Handler1.ashx?id="+ Model.id %>' Width="120" Height="120"/> 

     

    Pour le Repeater : Aucune idee - je suis presque novice !!

    • Marqué comme réponse Alex Petrescu lundi 6 septembre 2010 09:38
    jeudi 2 septembre 2010 23:23