2009-10-13 7 views
1

Im utilisant Linq ... plus précisément, PLINQO. de toute façon ce qui suit est un exemple d'une requête que je suis lié à un datagridview (WinForms):winforms datagridview tri en utilisant LINQ

public static List<Task> GetUserTasks(Guid userID) { 
     using (myDataContext ctx = new myDataContext()) { 
      try { 
       return ctx.Manager.Task.GetByUserID(userID).ToList(); 
      } catch (Exception) { 
       throw; 
      } 
     } 
    } 

Dans mon interface utilisateur, j'ai la configuration suivante pour lier:

 BindingSource bs = new BindingSource(); 
     bs.DataSource = DUtasks.GetUserTasks(User.Current.UserID); 
     dgvTasks.DataSource = bs; 

Il fonctionne, mais pas le tri est possible. J'ai essayé "AsEnumerable()" au lieu de "ToList()" mais que pour une raison quelconque, jette une erreur de "référence d'objection". Des idées sur la façon dont je peux procéder sur ce front?

Merci beaucoup!

Répondre

1

OK, problème trié !!! :)

trouvé le lien suivant: SortableBindingList... (mon commentaire est en bas avec le code de travail C# converti).

Maintenant toutes mes méthodes d'interrogation qui retournent Liste < (Entity)> simplement se habituer comme ceci:

 SortableBindingList<Task> sortedTasks = new SortableBindingList<Task>(DUtasks.GetUserTasks(User.Current.UserID)); 
     dgvTasks.DataSource = sortedTasks; 
     dgvTasks.Sort(colTaskDue, ListSortDirection.Ascending); 

Hope this helps quelqu'un!

0

Avez-vous essayé de retourner un IOrderedEnumerable? Vous ne savez pas si cela peut vous aider, mais cela est conçu pour gérer les résultats LINQ ordonnés.

+0

voleur HI. Non, malheureusement, cela ne fonctionne pas. J'ai déjà essayé un "orderby" ajouté à la requête sans résultat. J'ai la propriété de tri dans chaque colonne réglée sur automatique (oh, btw, j'ai choisi de ne pas générer automatiquement les colonnes, si cela fait un diff.), Donc je sais que dès que je l'ai bien fait, le SortGlyph est supposé apparaître, droite? – Shalan

0

utilisation seule classe de MySortableBindingList dans cette page mise en œuvre-a-Sortable-BindingList-

puis

var yourLinqList = ...;

MySortableBindingList sortList = new MonLigneBindingList (votreLigneLin);

dataGridView1.DataSource = sortList;

alors votre fichier dataGridView doit être trié lorsque l'en-tête de cellule est cliqué.

Questions connexes