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

Windows Forms Discussion :

Mauvais focus lors du tri d'une colonne sur un datagrid


Sujet :

Windows Forms

  1. #1
    Scorpi0
    Invité(e)
    Par défaut Mauvais focus lors du tri d'une colonne sur un datagrid
    Bonjour à tous,

    Pour mon premier message, un problème où malgré toutes mes recherches je n'ai pu trouver de solution.

    J'ai un datagrid que je remplis à l'aide d'une table de ma BDD, en passant par un dataset.
    Lors de mon affichage, j'utilise un datagridtablestyle. Je peux aussi cliquer sur une colonne pour trier mes données, ca marche.
    Le problème c'est que les index des lignes ne changent pas dans mon datagrid lors du tri. Après un tri, si l'utilisateur clicque sur le bouton modifier, qui lui récupère l'index de la ligne qui a le focus, la ligne considérée est celle qui était à cet index avant le tri.

    Un bout du code de mon évenement clique sur modifier ou j'aimerais récupérer le bon numéro d'index :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int currentIndex = m_Form.m_dataGrid.CurrentRowIndex;
    m_dataTable.Rows[currentIndex]["Nom"] = textBoxNom.Text;
    En gros une fois le datagrid trié, les index ne sont pas mis à jour. Je n'ai rien trouvé concernant ce problème nulle part, mais j'ai plusieurs pistes éventuelles :

    -faire du databinding ?
    -utiliser des view ?

    Pour l'instant j'ai désactivé le tri du tableau (fallait déjà savoir qu'il la propriété AllowSorting de la datagrid devient inutile si l'on définit un datagridtablestyle !!) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    m_dataGrid.m_TableStyle.AllowSorting = false;
    Mais pouvoir trier les colonnes que l'on veut quand l'on veut c'est quand même plus sympa.

    J'espère que mon problème est clair et que vous allez pouvoir m'orienter
    Dernière modification par Scorpi0 ; 23/10/2007 à 11h31.

  2. #2
    Nouveau membre du Club
    Inscrit en
    Novembre 2005
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 40
    Points : 26
    Points
    26
    Par défaut
    Est tu en .NET 2.0 ?

    Si oui pourquoi ne pas utiliser un datagridView bien plus puissant qui te permettra de bénéficier notemment de membre de type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    datagridView.selectedRow[0].Index
    Pour retrouver l'index de la ligne selectionnée ?

    Pour ton soucis d'index j'ai déjà vu ce phénomène sur les index de colonnes des DataGridView lors que tu change l'organisation des colonnes celle-ci garde leurs indexs, ce qui ma fois me semble pratique car ton index reste attaché à ta data quel que soit le tri ou l'organisation. Si tu perd tes index tu devrait faire une recherche par valeur dans tout ton datagrid pour retrouver ton index .

    N'as tu pas plustôt un problème de perte de focus ? Fais tu ton tri après la selection de la ligne ?

    En quoi l'index retourné te gêne t'il ? Modifie tu la mauvaise cellule ?

    Une autre piste : Si tu essaye de faire une correlation entre tes index de lignes et tes indes de table (vu que tu parle de vue) et que le tri pose problème tu peux aussi créé une colonne cachée qui contient ton index DB pour le retrouver facilement.

    Voila je crois que j'ai un peu de mal a cerner ton problème en fait mais j'espère que ces pistes t'aiderons.

    Merci

  3. #3
    Scorpi0
    Invité(e)
    Par défaut
    Merci pour ta réponse !!

    Effectivement, le problème c'est qu'après tri, la ligne sélectionné n'est pas la bonne, mais correspond à la ligne qui était présente avant le tri.
    Crée une colonne invisible serait une bonne solution en effet, ce qui m'embete c'est que je pensais que les index des lignes étaient synchronisés entre ce que l'on peut voir et ce que la datagrid contient effectivement dans le code, ce qui n'a pas l'air d'etre le ca, faut faire la synchronisation manuellement donc...

    Edit : d'ailleurs je suis d'accord que c'est bien pratique de pas perdre l'index, mais le problème c'est de perdre le lien entre l'index du datagrid et l'index que l'on clique une fois le tableau trié. Je me lance dans une colonne invisible qui s'occupera de ca !!
    Par contre il vas falloir gérer les évenements lors du clique colonne pour savoir quel colonne trier et dans quel sens... ouch !!
    Dernière modification par Scorpi0 ; 23/10/2007 à 17h49.

  4. #4
    Scorpi0
    Invité(e)
    Par défaut
    J'ai un peu réfléchi au problème, et je pense que je l'ai mal expliqué.
    En fait, le focus est bon. Je clique sur ma ligne 3, j'ai l'index = 3.
    Ensuite j'utilise pour modifier le contenu d'une cellule le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    m_dataTable.Rows[currentIndex]["Nom"] = textBoxNom.Text;
    l'index 3 de ma datatable n'est logiquement pas le meme que l'index 3 visualisé de ma datagrid, car j'ai trié les éléments. C'est la ou est le problème, mais quand je trie, je n'ai pas envie non plu que mes lignes de ma datatable change dans tous les sens.

    Sinon je sèche là..

    Edit : j'ai enfin trouver quelqu'un qui a eu le même problème, mais pas de réponse (forum délestage ?)

    http://www.developpez.net/forums/sho...898#post632898
    Dernière modification par Scorpi0 ; 24/10/2007 à 12h07.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Novembre 2005
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 40
    Points : 26
    Points
    26
    Par défaut
    Et tenter le dataGridView si tu est sur .NET 2.0 ?

Discussions similaires

  1. Tri selon une colonne sur un dataset
    Par reperret dans le forum VB.NET
    Réponses: 5
    Dernier message: 14/06/2013, 10h48
  2. Tri numérique lors clic sur le titre d'une colonne d'un datagrid
    Par boubou38 dans le forum Windows Presentation Foundation
    Réponses: 0
    Dernier message: 31/08/2012, 14h33
  3. Réponses: 8
    Dernier message: 03/12/2010, 16h08
  4. Réponses: 10
    Dernier message: 29/05/2008, 18h14
  5. [C#] [WinForms] Evènement sur le tri d'une colonne
    Par beway dans le forum Windows Forms
    Réponses: 2
    Dernier message: 04/03/2005, 16h43

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