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

C# Discussion :

Accéder à HeaderRow avec autoGenerateColumns = true


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 47
    Par défaut Accéder à HeaderRow avec autoGenerateColumns = true
    Bonjour,
    J'ai vu de nombreuses fois le problème énoncé dans des forums anglo-saxons et jamais je n'y ais vu de solutions.
    J'ai un GridView qui est rempli à l'aide d'un SqlDataSource, la propriété autoGenerateColumns est à True de cette manière .NET me créer dynamiquement le nombre de colonnes correspondant au nombre de champs de la requête, et les intitulés de colonne sont renseignés de la même façon.
    Jusque là tout va bien, vu que c'est un de mes premiers projets en .NET je m'attendais à plus compliqué
    Mais voilà ça se complique, je dois récupérer les intitulés de colonne, la requête venant d'un fichier de commande je ne sais pas quels champs sont utilisés, le nombre de colonne varies énormément, il ne peut pas être fixe.
    Or si j'utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    int nbColonnes = Gridview1.Columns.Count;
    nbColonnes est toujours égal à zéro, même si effectivement j'ai 30 colonnes !!!
    De plus GridView1.Row.Cells.Count me donne bien 30 ...
    Pire les entêtes de colonnes sont invisibles !!!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    string NomColonne1 = GridView1.HeaderRow.Cells[1].Text;
    NomColonne1="" !!! Alors qu'il y a bien l'intitulé de la deuxième colonne ...

    Il y a un gag, ou le gridview est finalement une fausse bonne idée ?

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 298
    Par défaut
    Est ce que tu as fait

    Gridview1.databind() de ton gridview avant d'essayer d'accéder à ces propriétés ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 47
    Par défaut
    J'ai effectivement l'impression qu'il faut exécuter cette méthode pour que ces propriétés soient accessibles après coup, le seul problème c'est que j'ai besoin de lire celles-ci pendant le RowDataBound ! pour le moment je passe par une solution client (JavaScript) avec tous les problèmes de compatibilité que cela implique.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 47
    Par défaut
    Il n'y a pas l'air d'y avoir de solutions !! je pense quand même que c'est un gros bug ... Ne pas pouvoir avoir accès aux données alors qu'elles sont visibles !!
    J'avais besoin de certaines informations, mais pour d'autres c'est mission impossible
    Si qqun tombe sur ce fil voilà quelques unes des méthodes que j'ai trouvé :
    Plutôt que de lire GridView.Columns.Count, il faut utiliser GridView.Rows.Cells.Count, pour accéder aux intitulés des colonnes en fait il faut se rapatrier sur un objet DataView qui récupère les champs de la BD interrogés par le SqlDataSource.
    Exemple de code pour remplir un DropDownList (Cas d'école à mon avis)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    DataView DataViewSQL = new DataView();
    DataViewSQL = (DataView)TonDataSource.Select(DataSourceSelectArguments.Empty);
    if (DataViewSQL.Count != 0)
    {
    DataRowView drv = DataViewSQL[0];
    TaDropDownList.Items.Clear();
    foreach (DataColumn ColumName in drv.DataView.Table.Columns) TaDropDownList.Items.Add(ColumnName.Caption);
    }

Discussions similaires

  1. Line count dans un JTextArea avec setLineWrap(true)
    Par BibiGmi dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 07/05/2013, 19h49
  2. Impossible d'accéder à LDAP avec VB6
    Par Bouassa dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 05/12/2007, 15h15
  3. autre layout render avec :popup => true ?
    Par gilgam dans le forum Ruby on Rails
    Réponses: 5
    Dernier message: 09/10/2007, 16h41
  4. Problème avec setundecorated(true)
    Par nico_somb dans le forum AWT/Swing
    Réponses: 8
    Dernier message: 27/09/2006, 02h44
  5. [ACCESS] Syntaxe SQL dans un TQuery avec Requestlive=True
    Par Unusual_FL dans le forum Bases de données
    Réponses: 2
    Dernier message: 28/06/2005, 10h51

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