欧美成人精品手机在线观看_69视频国产_动漫精品第一页_日韩中文字幕网 - 日本欧美一区二区

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開(kāi)發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

[點(diǎn)晴永久免費(fèi)OA]在C#中實(shí)現(xiàn)對(duì)ListView點(diǎn)擊列標(biāo)題自動(dòng)排序功能

admin
2022年12月22日 20:11 本文熱度 955
首先定義一個(gè)ListViewHelper類,代碼如下:
using System;
using System.Collections;
using System.Data;
using System.Windows.Forms;
using System.Drawing;

namespace Common
...{
    /**//// <summary>
    /// 模塊編號(hào):
    /// 模塊功能:對(duì)ListView的封裝
    /// 作      者:雷友兵
    /// 編寫(xiě)時(shí)間:2007-1-10
     /// </summary>
     public class ListViewHelper
    ...{
        /**//// <summary>
        /// 構(gòu)造函數(shù)
         /// </summary>
         public ListViewHelper()
        ...{
            //
             // TODO: 在此處添加構(gòu)造函數(shù)邏輯
             //
         }

        public static void ListView_ColumnClick(object sender, ColumnClickEventArgs e)
        ...{
            ListView lv = sender as ListView;
            // 檢查點(diǎn)擊的列是不是現(xiàn)在的排序列.
             if (e.Column == (lv.ListViewItemSorter as ListViewColumnSorter).SortColumn)
            ...{
                // 重新設(shè)置此列的排序方法.
                 if ((lv.ListViewItemSorter as ListViewColumnSorter).Order == SortOrder.Ascending)
                ...{
                    (lv.ListViewItemSorter as ListViewColumnSorter).Order = SortOrder.Descending;
                }
                else
                ...{
                    (lv.ListViewItemSorter as ListViewColumnSorter).Order = SortOrder.Ascending;
                }
            }
            else
            ...{
                // 設(shè)置排序列,默認(rèn)為正向排序
                 (lv.ListViewItemSorter as ListViewColumnSorter).SortColumn = e.Column;
                (lv.ListViewItemSorter as ListViewColumnSorter).Order = SortOrder.Ascending;
            }
            // 用新的排序方法對(duì)ListView排序
             ((ListView)sender).Sort();
        }
    }

    /**//// <summary>
    /// 繼承自IComparer
     /// </summary>
     public class ListViewColumnSorter : IComparer
    ...{
        /**//// <summary>
        /// 指定按照哪個(gè)列排序
         /// </summary>
         private int ColumnToSort;

        /**//// <summary>
        /// 指定排序的方式
         /// </summary>
         private SortOrder OrderOfSort;

        /**//// <summary>
        /// 聲明CaseInsensitiveComparer類對(duì)象,
         /// 參見(jiàn)ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/cpref/html/frlrfSystemCollectionsCaseInsensitiveComparerClassTopic.htm
         /// </summary>
         private CaseInsensitiveComparer ObjectCompare;

        /**//// <summary>
        /// 構(gòu)造函數(shù)
         /// </summary>
         public ListViewColumnSorter()
        ...{
            // 默認(rèn)按第一列排序
             ColumnToSort = 0;
            // 排序方式為不排序
             OrderOfSort = SortOrder.None;
            // 初始化CaseInsensitiveComparer類對(duì)象
             ObjectCompare = new CaseInsensitiveComparer();
        }

        /**//// <summary>
        /// 重寫(xiě)IComparer接口.
         /// </summary>
         /// <param name="x">要比較的第一個(gè)對(duì)象</param>
         /// <param name="y">要比較的第二個(gè)對(duì)象</param>
         /// <returns>比較的結(jié)果.如果相等返回0,如果x大于y返回1,如果x小于y返回-1</returns>
         public int Compare(object x, object y)
        ...{
            int compareResult;
            ListViewItem listviewX, listviewY;
            // 將比較對(duì)象轉(zhuǎn)換為L(zhǎng)istViewItem對(duì)象
             listviewX = (ListViewItem)x;
            listviewY = (ListViewItem)y;
            // 比較
             compareResult = ObjectCompare.Compare(listviewX.SubItems[ColumnToSort].Text, listviewY.SubItems[ColumnToSort].Text);
            // 根據(jù)上面的比較結(jié)果返回正確的比較結(jié)果
             if (OrderOfSort == SortOrder.Ascending)
            ...{
                // 因?yàn)槭钦蚺判颍灾苯臃祷亟Y(jié)果
                 return compareResult;
            }
            else if (OrderOfSort == SortOrder.Descending)
            ...{
                // 如果是反序排序,所以要取負(fù)值再返回
                 return (-compareResult);
            }
            else
            ...{
                // 如果相等返回0
                 return 0;
            }
        }
        /**//// <summary>
        /// 獲取或設(shè)置按照哪一列排序.
         /// </summary>
         public int SortColumn
        ...{
            set
            ...{
                ColumnToSort = value;
            }
            get
            ...{
                return ColumnToSort;
            }
        }
        /**//// <summary>
        /// 獲取或設(shè)置排序方式.
         /// </summary>
         public SortOrder Order
        ...{
            set
            ...{
                OrderOfSort = value;
            }
            get
            ...{
                return OrderOfSort;
            }
        }
    }
}

以上代碼封裝后無(wú)須更改,在窗體中添加一個(gè)ListView控件,在窗體的Load事件中添加如下代碼:

private   void  Form1_Load( object  sender, EventArgs e)
{
    
 this .listView1.ListViewItemSorter  =   new  Common.ListViewColumnSorter();
    
 this .listView1.ColumnClick  +=   new  ColumnClickEventHandler(Common.ListViewHelper.ListView_ColumnClick);
}

運(yùn)行一下,看看ListView單擊列標(biāo)題時(shí)是不是已經(jīng)實(shí)現(xiàn)自動(dòng)排序了?


該文章在 2022/12/22 20:11:59 編輯過(guò)
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車(chē)隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開(kāi)發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷(xiāo)售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved