2011-04-30 4 views
0

J'ai un datagridview appelé DGV, et je suis en train d'utiliser la fonction de tri pour trier la première cellule d'une manière programmatique en utilisant:Trier les cellules DataGridView de manière programmatique

DGV.Sort(Rang, System.ComponentModel.ListSortDirection.Descending); 

mais sur la sortie que j'ai cette :

1, 10, 100, 11, 12, ..., 19, 2, 20, 21, ...

I ont déjà fixé la cellule SortMode du rang à des programmes, mais j'ai toujours cette sortie.

Quel est le problème? !

Merci.

Répondre

2

Semble trier en fonction de place valeur, qui est comment un type de données string serait trié. Vous devez vous assurer que la colonne que vous triez est int.

Editer: Si vous tentez d'analyser votre valeur de chaîne, je recommande d'utiliser la méthode TryParse(). Voici un exemple de ce que votre pourrait Comparer ressembler à:

int Compare (object obj1, object obj2 ) 
    { 
     IComparer _comparer = Comparer.Default; 
     int val1, val2; 

     if (!Int32.TryParse (obj1.ToString (), out val1)) 
      return -1; 

     if (!Int32.TryParse (obj2.ToString (), out val2)) 
      return -1; 

     return _comparer.Compare (val1, val2); 
    } 
+0

Oui, ils sont chaîne bucause je les ajouter à partir d'un fichier en utilisant DGV.Rows.Add (mots [0]); que je reçois de text = sInputLine; string [] words = text.Split (delimiterChars); –

+0

@dotNet: bien, alors vous obtenez les bons résultats. Si vous voulez que le DGV trier numériquement, vous devez comparer int à int. – IAbstract

+1

Oui vrai merci, je devrais faire DGV.Rows.Add (int.Parse (mots [0])); –

Questions connexes