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 :

Mettre une ligne en gras dans un GridView selon une donnée


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 Mettre une ligne en gras dans un GridView selon une donnée
    Salut

    Je fais un module de messagerie sur mon site et j'utilise un GridView pour présenter le liste des messages. Dans ce GridView je présente des données simples issues d'une procéure stockée de la BDD (Date, Emmeteur et sujet du message). J'ajoute deux bouton pour :
    - voir le détail du message qui conduit à une autre apge
    - suprimer le message, en restant sur la même page et en rechargeant le GV une fois la BDD mise à jour.

    Le point où je sèche c'est pour trouver la ligne en cours de chargement, interroger une donnée et mettre en gras ou pas la ligne concernée. Je n'arrive pas à trouver le moyen de traiter ligne par ligne. J'ai pensé à travailler dans l'évènement RowDataBound, amis là, je vois pas quelq objet je doit prendre lui faire un test, genre :
    si le champ "lu" est à 0 metre en gras, sinon rien

    J'ai mis mon GV côté HTML comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <asp:SqlDataSource ID="sdsMessagerie" runat="server" ConnectionString="<%$ ConnectionStrings:DataDev %>"></asp:SqlDataSource>
    <asp:GridView ID="gvMessagerie" runat="server" DataSourceID="sdsMessagerie"></asp:GridView>
    Et je fabrique mon GridView en CodeBehind comme cela :
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
        Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
            With sdsMessagerie
                .SelectCommand = "EXEC dbo.SITE_Messagerie_ListeMessage '" & GetUserGUID().ToString & "','" & Mode & "'"
            End With
            Dim bfIdMsg, bfEmmeteur, bfDate, bfTitre As New BoundField
            Dim btfDetail, btfSupp As New ButtonField
     
            With bfIdMsg
                .DataField = "Id_Message"
     
            End With
            With btfDetail
                .Text = "Detail"
                .ButtonType = ButtonType.Button
                .CommandName = "DetailMessage"
            End With
            With btfSupp
                .Text = "Supprimer"
                .ButtonType = ButtonType.Button
                .CommandName = "SuppMessage"
            End With
            With bfEmmeteur
                .HeaderText = "Emmeteur"
                .DataField = "UserName"
            End With
            With bfDate
                .HeaderText = "Date"
                .DataField = "Date_Creation"
            End With
            With bfTitre
                .HeaderText = "Titre"
                .DataField = "Titre_Message"
            End With
            With gvMessagerie
                .AutoGenerateColumns = False
                With .Columns
                    .Add(bfIdMsg)
                    .Add(bfEmmeteur)
                    .Add(bfDate)
                    .Add(bfTitre)
                    .Add(btfDetail)
                    .Add(btfSupp)
                End With
                .DataBind()
            End With
        End Sub
    Pouvez vous m'orienter ?

  2. #2
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Plein nord

  3. #3
    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, je me sentais vraiment perdu !

    Sinon, mon truc est vraiment si compliqué ?

    Parce que l'autre solution que j'ai c'est de laisser tomber le GV et fabriquer un table à la volée, un peu à l'ancienne méthode de l'ASP 3.0. Mais j'avoue que ça me fais un peu chier de disposer d'un truc puissant comme le FrameWork et revenir à des méthodes archaïques.

    Depuis hier j'ai essayé plein de truc mais rien n'y fais et la MSDN est un peu muette sur le traitement d'une ligne précise dans un GRidView.
    Surtout, ce que je n'arrive pas à faire c'est récupérer un index ou un identifiant de la ligne en cours de chargement.

  4. #4
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Bah le RowDataBound, c'est bon.
    C'est là dedans que tu dois faire ton traitement

  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
    Ok, donc maintenant je sais où je dois programmer.

    Mais je bloque sur la récupération de la ligne. J'arrive pas à faire le test pour interroger la ligne de donnée et mettre la ligne du GridView en gras.

    C'est surtout là que j'ai besoins d'aide.

  6. #6
    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 mettre un peu de code pour être plus précis :
    Lorsque j'essaie ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
            If gvMessagerie.Rows(e.Row.ID).Cells(0).Text = 7 Then
                gvMessagerie.Rows(e.Row.ID).BackColor = Drawing.Color.Blue
     
            End If
    Il me dit ça :
    L'index était hors limites. Il ne doit pas être négatif et doit être inférieur à la taille de la collection.
    Nom du paramètre : index
    Explication :
    je test la ligne courante (enfin, je crois qu'avec ça je trouve la ligne courante) et je lui demande si le premier champ est = à 7 (je sais que j'en ai un qui est égale) et je lui demande mettre la ligne en bleu (je verrais plus tard pour faire le gras, par le Style, j'ai pas trouvé de suite, mais je pense passer par une classe CSS). Je verrais également comment je peux interroger une donnée qui n'est pas affichée.

    Du coup, je sèche sur la récupération de l'index de la ligne courante.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Colorer une ligne sur deux dans un tableau selon le modèle trouvé dans la FAQ
    Par notebleue dans le forum PHP & Base de données
    Réponses: 23
    Dernier message: 17/03/2015, 16h28
  2. Réponses: 1
    Dernier message: 15/04/2014, 22h56
  3. Réponses: 32
    Dernier message: 27/11/2007, 23h03
  4. Comment mettre des lignes de couleur dans une TCheckListBox ?
    Par Isa31 dans le forum Composants VCL
    Réponses: 9
    Dernier message: 31/03/2005, 08h40
  5. [C#] Comment mettre une ligne en couleur dans mon DataGrid ?
    Par vandeyy dans le forum Windows Forms
    Réponses: 7
    Dernier message: 19/07/2004, 10h03

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