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 :

[ASP.NET 2.0 - C#] ImageButton et GridView


Sujet :

ASP.NET

  1. #1
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 49
    Points : 39
    Points
    39
    Par défaut [ASP.NET 2.0 - C#] ImageButton et GridView
    Salut !

    J'ai un petit souci avec un ImageButton dans un GridView.

    D'abord le code et après les explications :

    Page .aspx :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <asp:TemplateField HeaderText="Archive">
                    <ItemStyle HorizontalAlign="Center" VerticalAlign="Bottom" Width="30px"/>
                    <HeaderStyle HorizontalAlign="Center" VerticalAlign="Middle" />
                    <ItemTemplate>
                        <asp:ImageButton ID="btnArchive1" runat="server"
                             OnClientClick="return confirm('Êtes-vous sûr de vouloir archiver ce compte ?');" 
                             CommandName="Archive"
                             CausesValidation="false"
                             CommandArgument="<%# Container.DataItemIndex %>" />
                    </ItemTemplate>            
                </asp:TemplateField>
    Code Behind :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    // Image archive
                for (int i = 0; i < gvComptes.Rows.Count; i++)
                {
                    // Récupération des infos sur le compte correspondant à la ligne dans le gridview
                    Compte compteSelect = compteProcess.GetCompte(Convert.ToInt32(gvComptes.DataKeys[i].Value.ToString()));
    
                    
                    if (compteSelect.Archive == 0)
                    {
                        // Compte non archivé
                        ((ImageButton)pagerRow.FindControl("btnArchive1")).ImageUrl = "../Images/no-archive.png";
                    }
                    else
                    {
                        // Compte archivé
                        ((ImageButton)pagerRow.FindControl("btnArchive1")).ImageUrl = "../Images/archive.png";
                    }
                }
    Ce que je cherche à faire ici c'est, pour chaque ligne du gridview, si la valeur de compteSelect est égale à 0 j'affiche une image sinon j'affiche une autre image.

    Dans le code behind (au niveau des lignes en gras), j'ai une NullReferenceException et je ne vois pas comment résoudre ce problème (si toutefois c'est possible).

    Merci pour vos réponses !!!

    Alex

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2005
    Messages
    1 240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 1 240
    Points : 1 619
    Points
    1 619
    Par défaut
    c'est quoi pagerrow? il faudrait faire une recherche sur la ligne en cours.

  3. #3
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 49
    Points : 39
    Points
    39
    Par défaut
    Salut !

    PagerRow correspond à ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    GridViewRow pagerRow = gvComptes.BottomPagerRow;
    Ta question m'a permi de me rendre compte que je cherche le Control ImageButton dans ce pagerRow et c'est clair qu'il n'y est pas !!!

    J'ai vu ce bout de code sur le net mais il ne fonctionne pas très bien dans mon cas : http://p2p.wrox.com/topic.asp?whichp...OPIC_ID=48061&

    Mon gridview est rempli suite à une recherche dans une base oracle et j'ai fait en sorte d'avoir des résultats différents pour la variable Archive afin de pouvoir afficher soit une image active soit une image inactive.

    J'ai essayé le bout de code proposé dans le lien cité plus haut et j'ai remarqué que l'image affichée pour chaque ligne correspondait à l'image affectée à la dernière !!! (c'est peut-être pas très clair ce que je viens de dire ) !

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    581
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2004
    Messages : 581
    Points : 633
    Points
    633
    Par défaut
    et faire une propriété public dans le code behind qui te retournerait la bonne url suivant la valeur de compteSelect.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
     
    public string CheckCompteSelect(string compteSelectValue)
    {
          int compte = int.parse(compteSelectValue);
          string path = "";
          if(compteSelectValue == 0)
          {
               path = "bla.gif";
          }
          else
              path = "otherbla.gif";
     
          return path;
    }
     
     
    // dans aspx peut etre un truc du genre 
    <%# CheckCompteSelect('CompteSelectValueFromDB').ToString()%>
    Fix

Discussions similaires

  1. Réponses: 3
    Dernier message: 23/07/2009, 11h38
  2. [ASP.NET][C#] Commande "Insert" dans un GridView
    Par dinbougre dans le forum ASP.NET
    Réponses: 5
    Dernier message: 17/10/2007, 17h49
  3. Réponses: 2
    Dernier message: 09/08/2006, 04h13
  4. [ASP.Net/GridView] Comment effectuer une jointure ?
    Par nikalkal dans le forum Accès aux données
    Réponses: 3
    Dernier message: 20/07/2006, 10h05
  5. [ASP.NET|C#] Gridview et butonfield
    Par dumser1 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 13/03/2006, 14h26

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