IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Un bouton Image dynamique dans un GridView


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut Un bouton Image dynamique dans un GridView
    Salut

    J'ai monté un GridView dans ma page et je fabrique les colonnes de manière dynamique.
    L'une de mes colonnes est fabriquée comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Dim actif As New ButtonField
    With actif
    	.HeaderText = "Actif"
    	.ButtonType = ButtonType.Image
    	.ImageUrl = "~/image/0.png"
    	.CommandName = "Actif"
    End With
    gvCampagne.Columns.Add(actif)
    Maintenant, je voudrais que l'image soit dynmaique selon la donnée qui est contenue dans un champ. Ce champ est censé contenir un chiffre (0 ou 1 pour l'instant) et ce chiffre correspond au nom de l'image que je voudrais voir appraitre.

    Je patauge pas mal car je ne trouve pas le moyen de le faire. Soit j'arrive à afficher l'image en prenant un ImageField, mais là je n'ai plus accés au commandes du GridView, soit je reste sur le ButtonField mais là, je n'arrive pas à changer l'image à la volée.

    Pouvez vous m'aider ?

  2. #2
    Membre chevronné Avatar de predalpha
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    392
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 392
    Par défaut
    Salut Zooffy,

    essaies peut-être en utilisant l'evenement rowdatabound du gridview ou un truc du genre. Tu pourrais ainsi contrôler la valeur et mettre ce que tu veux.

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 312
    Par défaut
    un ImageButton dans un templateField ?

    Tu change ton image dans ton rowdatabound

    et ensuite tu passe par ton rowCommand

  4. #4
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    Merci pour votre aide.

    Je suis maintenant confronté à un souci que je ne comprends pas.
    J'ai tenté d'utiliser le RowDataBound (option de predalpha) mais il me lance le message suivant :
    La colonne "Id_Campagne" n'appartient aps à la table DefaultView
    Ce champ est le premier de ma réquête qui sert à nourri le GridView. J'ai placé un SqlDataSource dans le code HTML avec un lien DataSourceId sur leGridView. Je ne comprends pas ce qu'il dit par rapport à cette fameuse table DefaultView.

  5. #5
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    Sur l'option TemplateField, je rencontre un autre souci, différent.
    Je ne réussi pas à le mettre en oeuvre à partir du CodeBehind. Je en trouve pas le moyen d'ajouter un contrôle dedans et la MSDN est muette là dessus, les seuls exemples qu'il donne sont côté HTML.

  6. #6
    Membre chevronné Avatar de predalpha
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    392
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 392
    Par défaut
    tu peux nous balancer un peu plus de code ?
    (contrôle aussi les rowtypes)

  7. #7
    Membre chevronné Avatar de predalpha
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    392
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 392
    Par défaut
    oki donnes des news

  8. #8
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 312
    Par défaut
    Sur l'option TemplateField, je rencontre un autre souci, différent.
    Je ne réussi pas à le mettre en oeuvre à partir du CodeBehind. Je en trouve pas le moyen d'ajouter un contrôle dedans et la MSDN est muette là dessus, les seuls exemples qu'il donne sont côté HTML:


    dim t as new TemplateField
    dim ImgBtn as new ImageButton
    with ImgBtn
    ...
    end with
    t.ItemTemplate = ImgBtn

    --------------------
    Sinon, au regard de ton code, tu place ton updatePanel en updateMode="Always"
    puis tu place des triggers, j'ai pas trop compris l'interet de la manip, as tu vraiment besoin du Always ?

  9. #9
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    Je vais essayer ton morceau de code pour le ItemTemplate, mais en début d'aprés midi, avant que je me fasse ennuyer par ma BDD, ça avait pas l'air de lui plaire ce genre de chose.

    Sinon, le mode ALways, ben je sais pas trop, je mets des triggers pour pouvoir exécuter le code que je veux sur chaque action de l'utilistauer, le mode Always c'est aprce que je sais pas trop à quoi cert le Conditoinnal, enfin, j'ai pas compris ces subtilités.

    Si tu as une explication simple, je veux bien. Mais simple, moi pas trés affuter sur AJAX, moi utiliser ARIEL d'abitude.........

  10. #10
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    bon, donc j'ai essayé le ItemTemplate et j'ai eu un gentil message de la part du serveur.
    Le voici, je vous laisse juger de l'éloquence de ce petit gars trés sympa, qu'à pas l'air de comprendre que je pourrai lui appuyer sur le bouton et le terminer mieux qu'un T1000 ...........
    GGRRREEEE

    Impossible d'effectuer un cast d'un objet de type 'System.Web.UI.WebControls.ImageButton' en type 'System.Web.UI.ITemplate'.

  11. #11
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    Je me permets de remonter mon message d'hier soir qui répond précisément à ton idée qui parraissait pas mal à la base. Mais visiblement le serveur ne l'entends pas de cette oreille.

    T'en pense quoi ? Moi, je nage, je brasse et je ratisse, mais large....

    Citation Envoyé par zooffy Voir le message
    bon, donc j'ai essayé le ItemTemplate et j'ai eu un gentil message de la part du serveur.
    Le voici, je vous laisse juger de l'éloquence de ce petit gars trés sympa, qu'à pas l'air de comprendre que je pourrai lui appuyer sur le bouton et le terminer mieux qu'un T1000 ...........
    GGRRREEEE

  12. #12
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 312
    Par défaut
    Je ne saurai trop te conseiller que de lire rapidement les propriétés du updatepanel, surtout :

    -UpdateMode
    -ChildrensAsTriggers

    Si tu sais pas a quoi ca sert, ca sert a rien de mettre un updatepanel.

    UpdateMode="always" est utilisé dans des cas extremement particuliers, donc t'as 95% de chance de pas etre dans ce cas ( en gros ton updatePanel se rafraichit a tous les rafraichissements d'une page, partiels ou pas ).

    Si tes triggers sont Dans ton updatePanel, pas besoin de lui préciser, il sont pas défaut triggers.

    Google t'expliquera tout ca bien mieux que moi...

  13. #13
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    Ben en fait, GOOGLE, c'est pas mon ami.
    Et puis GOOGLE, il explique pas bien les choses de l'AJAX car il n'est pas trés calé en la matière, d'une aprt, mais surtout le peu de chose qu'il eput me raconter là dessus il me le dit dans un langage que je ne comprends pas. Il parait que ça s'appelle l'Anglais et que y a des millions de gens qui le parle. Mais pas de bol, pas moi !
    (LuteceFalco, pas la peine de rebeurrer la tartine....)

    Donc, si je comprends ce que tu dais là, je devrais plutôt passer en UpdateMode = "Conditionnal" et supprimer mes deux Triggers sur le gvCampagne.
    Mais alors, comment le UpdatePanel qui contient mon GridVeiw va se mettre à jour quand je vais cliquer sur les boutons de commande ?
    Ou alors est ce qu'il ne faudrait pas que je mette deux UpdatePanel, un pour leGridView et un pour la table en dessous qui acceuille les trucs qui se passent avec les boutons du RowCommand ?

    Mais de toute façon, ceci nous écarte de la question de base : comment faire un bouton image qui déclenche un traitement et qui peut prendre une image différente selon le contenu d'une donnée de la table.

    Mais merci pour ton aide, je vais tout de même aller voir mon ami GOOGLE pour voir ce qu'il peut me raconter comme histoire de UpdatePanel.

Discussions similaires

  1. lien, bouton et texte au dessus d'une image cliquable dans un gridView
    Par casa_sniper dans le forum Développement Web avec .NET
    Réponses: 0
    Dernier message: 16/04/2014, 20h10
  2. Afficher une image dynamique dans une servlet
    Par reg01 dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 03/04/2008, 11h28
  3. Réponses: 2
    Dernier message: 13/12/2007, 10h04
  4. Réponses: 16
    Dernier message: 06/08/2006, 23h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo