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 :

GridView remplit par un DataTable


Sujet :

ASP.NET

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    51
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 51
    Par défaut GridView remplit par un DataTable
    Bonjour

    Actuellement pour un projet informatique j'utilise un DataTable que je bind sur un GridView.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Affichage.DataSource = dt;
    Affichage.DataBind();
    if (present != -1) Affichage.Columns[present].ControlStyle.ForeColor = System.Drawing.Color.Red;
    Ma gridView s'appelle Affichage, et mon DataTable dt. Present correspond à la colonne que je recherche (je l'ai cherché dans le DataTable un peu avant par une fonction toute bète).

    J'aimerais si possible modifier la couleur du texte pour cette colonne, mais cela engrange toujours un erreur quoique je fasse. J'ai peur qu'il n'arrive pas à accéder à la GridView puisqu'elle est chargé automatiquement d'un DataTable et que lorsque je demande une information comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    LblErrorTab = Affichage.Columns[present].ControlStyle.ForeColor.ToString();
    Cela n'affiche rien...

    Je me demande si ce n'est pas à cause de l'autoGenerateColumn qui est à true.

    Enfin voilà je bloque depuis un bon moment, la faq et les cours ne m'ont pas donnés de solution.

    Merci d'avance si vous pouvez me débloquer.

  2. #2
    Membre Expert
    Avatar de Nicolas Esprit
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Février 2010
    Messages
    1 467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 1 467
    Par défaut
    Bonjour,

    A priori ça provient de l'AutoGenerateColumn. As-tu essayé sans ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    51
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 51
    Par défaut
    J'ai essayé sans. ^^

    Le problème c'est que sans l'autogeneratecolumn mon gridview ne s'affiche pas justement. :s

    Je suis toujours bloqué. :s

    Enfin je cherche comme une fouine. ^^

  4. #4
    Membre Expert
    Avatar de Nicolas Esprit
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Février 2010
    Messages
    1 467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 1 467
    Par défaut
    Bonjour,

    C'est normal que rien ne s'affiche si tu enlève l'option AutoGenerateColumn. Il te faut indiquer au moins un champ dans le markup de la GridView (un ItemTemplate ou un simple BoundField te suffira).

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    51
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 51
    Par défaut
    Je sais bien. Le problème c'est que grâce au DataTable toute ma gridview est remplie de manière dynamique, donc si je m'amuse à enlever l'AutogenerateColumn pour mettre un ItemTemplate, un BoundField, alors toutes les données que je veux charger depuis le DataTable ne sont pas affichées. :s En fait il accepte pas que je modifie la couleur d'une colonne dont il n'est pas assuré de l'existence, même si je lui dis qu'elle existe. Enfin je vois ça comme ça, j'ai sans doute tord, mais ça n'empèche pas que je n'arrive pas à colorer la colonne que je souhaite puisque je Bind mon GridView dans le Code-Behind et dans le HTML je n'implémente aucune colonne (ça ne m'interesse pas en fait ^^).

    Voilà. Merci pour ton élément de réponse Nicolas Esprit, j'ai même douté à un moment en me disant que si j'indiquais un champ dans le markup alors j'aurais la chance à la fois de pouvoir binder mon DataTable sur la GridView et de pouvoir accéder aux colonnes qui sont bindés. Mais ça n'a pas marché, dommage. :s

    Bref merci d'essayé de m'aider... XD

  6. #6
    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
    Essaye en passant par une classe CSS plutôt que de passer par une propriété
    Si ça marche pas, essaye de modifier la couleur de la cellule concernée pour chaque ligne via l'événement OnRowDataBound

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    51
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 51
    Par défaut
    Thank you very much lutecefalco !!!

    La propriété css j'avais déjà essayé Par contre le OnRowDataBound j'y avais pas pensé (j'avais pourtant pensé au OnDataBound ^^). Merci encore. Donc voilà problème réglé de cette façon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        protected void Affichage_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (present != -1)
                e.Row.Cells[present].ForeColor = System.Drawing.Color.Red;
        }

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 02/12/2011, 10h46
  2. syslog remplit par postfix
    Par brunocott dans le forum Administration système
    Réponses: 4
    Dernier message: 23/12/2010, 20h48
  3. [WD15] TableEnregistre sur une table remplit par une requête
    Par tux59 dans le forum WinDev
    Réponses: 4
    Dernier message: 04/07/2010, 16h20
  4. Grille remplit par clic de souris
    Par Yopii dans le forum Interfaces Graphiques en Java
    Réponses: 1
    Dernier message: 13/09/2009, 16h15

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