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

VB.NET Discussion :

Forcer le tri d'un datagridview lié à un dataset


Sujet :

VB.NET

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    299
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 299
    Points : 330
    Points
    330
    Par défaut Forcer le tri d'un datagridview lié à un dataset
    Bonjour,
    Mon problème semble simple mais pas grand chose sur le net pour trouver une réponse alors je fais une nouvelle fois appel aux pros de Developpez...

    J'ai un datagridview lié à un dataset en conception (peut être que la précision a un sens), je vois donc 3 colonnes (elles sont visibles même en conception) dont la propriété DataPropertyName est bien renseignée.
    Par contre, bizarrement, la propriété IsDataBound me renvoit False...

    Je souhaiterais trier par défaut cette datagridview sur la deuxième colonne lors de son affichage.
    L'appel à .Sort(macolonne,monsensdetri) provoque une exception de type "DataGridView control must be bound to an IBindingList object to be sorted"

    J'ai l'impression donc qu'il me faudrait implémenter un IBindingList (je suis preneur d'exemples au passage) alors que selon moi, le binding devrait être implicite (la grille affiche bien les informations demandées et les colonnes se trient bien quand on clique sur le header des colonnes).

    Quelqu'un a une idée ou une explication ?

    Edit: je viens de vérifier que si je définit le datasource en execution, le problème ne survient plus. Mon problème est résolu mais avec un petit goût d'incompréhension...
    Je précise aussi que je tourne sous la V2 du framework avec #Develop qui n'est pas très pote avec les datagridview en conception...

  2. #2
    Membre actif
    Inscrit en
    Avril 2006
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 346
    Points : 252
    Points
    252
    Par défaut
    Bonjour,

    pourrais-tu indiquer la valeur attribuée à la propriété DataSource du datagridview ?

    Merci

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    299
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 299
    Points : 330
    Points
    330
    Par défaut
    Bonjour,

    C'est le nom du DataSet, le DataMember étant le nom d'une des DataTable du DataSet

  4. #4
    Membre actif
    Inscrit en
    Avril 2006
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 346
    Points : 252
    Points
    252
    Par défaut
    Tu dois donc avoir quelque chose comme:

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    tonDataGridView.DataSource = typeof(tonDataSet);

    C'est pour ça que tes 3 colonnes sont visibles en conception, mais ton DataGridView n'est bindé à aucun objet. Ce qui explique que la propriété IsDataBound te renvoie false.

    En espérant que cela réponde à ta question.
    ++

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    299
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 299
    Points : 330
    Points
    330
    Par défaut
    Merci pour ta réponse.
    Comme je l'ai dit dans le premier message, la propriété est renseignée en conception et non dans le code.
    Je vois donc dans ma grille de propriété une chaine de caractère sans avoir vu ce qui a été généré.
    Mon problème a été résolu en mettant dans le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MaDataGrid.DataSource = MonDataSet
    (sans typeof)

    J'ai donc l'impression qu'en conception, ce n'est pas le même code qui est généré.

  6. #6
    Membre actif
    Inscrit en
    Avril 2006
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 346
    Points : 252
    Points
    252
    Par défaut
    Mon problème a été résolu en mettant dans le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MaDataGrid.DataSource = MonDataSet
    (sans typeof)
    Oui j'ai bien compris. Je pense que le designer a généré le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MaDataGrid.DataSource = typeof(MonDataSet);
    Mais c'est parce que tu l'as renseigné ainsi en mode design.
    Si en mode design, tu attribue à la propriété DataSource de ton datagridview une instance du dataset, il générera:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MaDataGrid.DataSource = MonDataSet;
    Tu peux le vérifier très facilement en regardant le code généré par le designer.

    ++

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    299
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 299
    Points : 330
    Points
    330
    Par défaut
    Merci encore de creuser le sujet Zoaax.

    Effectivement, je viens de vérifier qu'en conception (et sous #Develop), si on définit le dataSource comme tu l'as précisé, il ne génère pas de TypeOf (donc ça devait marcher sauf...que le bug survient à nouveau !).

    De toute façon, je ne vois pas d'autres méthodes pour renseigner cette propriété en conception, la saisie directe n'étant pas acceptée.

    Je pense donc plutôt à un bug du côté de #Develop (les dataset/datatable/datacolumn ne sont pas éditables en conception, c'est dire si cette application manque un peu de maturité sur ce compo).

  8. #8
    Membre actif
    Inscrit en
    Avril 2006
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 346
    Points : 252
    Points
    252
    Par défaut
    Bonjour,

    je n'avais pas fais attention que tu étais sous #Develop.
    Je pensais à Visual Studio 2005. Sous VS, tu ajoutes un composant DataSet depuis la boîte à outils. Le designer l'instancie et tu peux le sélectionner (toujours dans le designer) lorsque tu définis la propriété DataSource du DataGridView. Si tu n'as pas VS2005, tu peux aussi le tester avec Visual Studio C# Express.

    ++

  9. #9
    Membre actif
    Inscrit en
    Avril 2006
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 346
    Points : 252
    Points
    252
    Par défaut
    Je viens d'essayer avec #Develop V2.2.1 et ça marche comme sous VS2005.
    Je pense donc que c'est plus un problème de manip de ta part.
    Je t'ai expliqué dans le message précédent comment tu devais procéder. Est-ce que c'est clair ?

    ++

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    299
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 299
    Points : 330
    Points
    330
    Par défaut
    Oui ça marche (dans le sens où le code est bien généré et que je fais bien cette manip).

    Non, ça ne marche pas (dans le sens où le résultat à l'exécution n'est pas conforme aux attentes si on procède comme celà).

    M'enfin, c'est pas grave puisque j'ai résolu le problème en settant la propriété à l'execution !

  11. #11
    Membre actif
    Inscrit en
    Avril 2006
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 346
    Points : 252
    Points
    252
    Par défaut
    M'enfin, c'est pas grave puisque j'ai résolu le problème en settant la propriété à l'execution !
    Et ça te gênait de faire ainsi ?

    Si c'est résolu, pense au tag Résolu.

    ++

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

Discussions similaires

  1. [C# 2.0] Glyphe de tri sur un DataGridView
    Par StormimOn dans le forum Windows Forms
    Réponses: 2
    Dernier message: 05/09/2007, 12h25
  2. Enlever le tri sur une DataGridView
    Par Contrec dans le forum C#
    Réponses: 13
    Dernier message: 09/07/2007, 09h04
  3. Problème d'activation du tri sur un datagridView
    Par 2020 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 05/07/2007, 14h51
  4. Enlever le tri d'un DataGridView
    Par Pikwik10 dans le forum VB.NET
    Réponses: 3
    Dernier message: 27/04/2007, 15h29
  5. Réponses: 3
    Dernier message: 13/12/2006, 16h01

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