一个form 中有一个gridview,点击某一列时按此列排序,请问该怎么实现
.谢谢给位了,最好给出详细的代码,必有高分相谢

解决方案 »

  1.   

    你这问题,其实不难,就是用起来复杂些
    我给你 贴点代码,有不明白的地方 发消息给我
    MySorter sorter=new MySorter();
    lswBase.ListViewItemSorter=sorter;private void lswBase_ColumnClick(object sender, System.Windows.Forms.ColumnClickEventArgs e)
    {
    if(lswBase.Items.Count!=0)
    {
    if (e.Column==sorter.SortColumn)
    {
    if (sorter.SortOrder==SortOrder.Ascending)
    sorter.SortOrder=SortOrder.Descending;
    else
    if (sorter.SortOrder==SortOrder.Descending)
    sorter.SortOrder=SortOrder.Ascending;
    else
    return;
    }
    else
    {
    sorter.SortColumn=e.Column;
    }
    this.lswBase.Sort();
    }
    }
      

  2.   

    /// <summary>
    /// listView1.ListViewItemSorter的排序器(自定义)
    /// </summary>
    public class MySorter:IComparer
    {
    private Comparer comparer;
    private int sortColumn;
    private SortOrder sortOrder;
    public MySorter()
    {
    sortColumn=0;
    sortOrder=SortOrder.None;
    comparer=Comparer.Default;
    }
    /// <summary>
    /// 指定进行排序的列
    /// </summary>
    public int SortColumn
    {
    get {return sortColumn;}
    set {sortColumn=value;}
    }
    /// <summary>
    /// 指定按升序或降序进行排序
    /// </summary>
    public SortOrder SortOrder
    {
    get {return sortOrder;}
    set {sortOrder=value;}
    }
    public int Compare(object x,object y)
    {
    int CompareResult;
    ListViewItem itemX=(ListViewItem)x;
    ListViewItem itemY=(ListViewItem)y;
    //在这里您可以提供自定义的排序
    CompareResult=comparer.Compare(itemX.SubItems[this.sortColumn].Text,itemY.SubItems[this.sortColumn].Text);
    if (this.SortOrder==SortOrder.Ascending)
    return CompareResult;
    else
    if (this.SortOrder==SortOrder.Descending)
    return (-CompareResult);
    else
    return 0;
    }
    }
      

  3.   

    啊噢,只找到个 listview的,应该差不多吧
      

  4.   

    http://msdn2.microsoft.com/zh-CN/library/hwf94875.aspx
    //看看这个吧