none
DataGridView – comment trier sur plusieurs colonnes (2) RRS feed

  • Discussion générale

  • Tread précédent: DataGridView – comment trier sur plusieurs colonnes (1)

     

     

    9.2 DataGridView indépendant

    Pour fournir la prise en charge pour le tri sur plusieurs colonnes, vous pouvez gérer l'événement SortCompare ou appeler Sort(IComparer), la version surchargée de la méthode Sort pour une plus grande flexibilité de tri.

     

    9.2.1 Tri personnalisé à l'aide de l'événement SortCompare

    L'exemple de code suivant illustre le tri personnalisé à l'aide d'un gestionnaire d'événements de SortCompare. Le DataGridViewColumn sélectionné est trié et, s'il y a des doublons dans la colonne, la colonne ID est utilisée pour déterminer l'ordre final.

     

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Windows.Forms;
    
    class Form1 : Form
    {
     private DataGridView dataGridView1 = new DataGridView(); 
    
     // le point d’entrée de l’application
    
     [STAThreadAttribute()]
     static void Main()
     {
     Application.EnableVisualStyles();
     Application.Run(new Form1());
     }
    
     public Form1()
     {
     // Initialliser le formulaire
     dataGridView1.AllowUserToAddRows = false;
     dataGridView1.Dock = DockStyle.Fill;
     dataGridView1.SortCompare += new DataGridViewSortCompareEventHandler(
      this.dataGridView1_SortCompare);
     Controls.Add(this.dataGridView1);
     this.Text = "DataGridView.SortCompare demo";
    
     PopulateDataGridView();
     }
    
    
     public void PopulateDataGridView()
     {
     // ajouter de colonnes au DataGridView.
     dataGridView1.ColumnCount = 3;
    
     // definir le proprieties des colonnes DataGridView
     dataGridView1.Columns[0].Name = "ID";
     dataGridView1.Columns[1].Name = "Name";
     dataGridView1.Columns[2].Name = "City";
     dataGridView1.Columns["ID"].HeaderText = "ID";
     dataGridView1.Columns["Name"].HeaderText = "Name";
     dataGridView1.Columns["City"].HeaderText = "City";
    
     // Ajouter des lignes dans le DataGridView
     dataGridView1.Rows.Add(new string[] { "1", "Parker", "Seattle" });
     dataGridView1.Rows.Add(new string[] { "2", "Parker", "New York" });
     dataGridView1.Rows.Add(new string[] { "3", "Watson", "Seattle" });
     dataGridView1.Rows.Add(new string[] { "4", "Jameson", "New Jersey" });
     dataGridView1.Rows.Add(new string[] { "5", "Brock", "New York" });
     dataGridView1.Rows.Add(new string[] { "6", "Conner", "Portland" });
    
    
     // adjuster la taille de colonnes
     dataGridView1.AutoResizeColumns();
     }
    
    
     private void dataGridView1_SortCompare(object sender,
     DataGridViewSortCompareEventArgs e)
     {
     // Essayer le tri sur les cellules de la colonne courante
     e.SortResult = System.String.Compare(
      e.CellValue1.ToString(), e.CellValue2.ToString());
    
    
     // Si les cellules sont egales, trier sur la colonne ID
     if (e.SortResult == 0 && e.Column.Name != "ID")
     {
      e.SortResult = System.String.Compare(
      dataGridView1.Rows[e.RowIndex1].Cells["ID"].Value.ToString(),
      dataGridView1.Rows[e.RowIndex2].Cells["ID"].Value.ToString());
     }
     e.Handled = true;
     }
    }
    
    

     

    Continuation: DataGridView – comment trier sur plusieurs colonnes (3)

     

    Pour plusieurs questions sur la bibliothèque de classes .NET, visitez Foire aux Questions  -  Bibliothèque de classes .NET Framework

     

     

    mercredi 30 juin 2010 14:11