.NET基础示例系列之九:ListView排序

ListViewDetail显示时,设置其Sorting属性,是按第一列进行排序,并不能按子项进行排序

以下代码实现按各项进行排序,包括根据子项的排序(代码不够简洁,大家见谅):

        //ListView标题的单击事件:排序

        private void listViewRS_ColumnClick(object sender, ColumnClickEventArgs e)

        {

            if (e.Column == 0)//第一列

            {

                if (this.m_SortModeCol1 == 0)//增序

                {

                    ListViewSorter sorter = new ListViewSorter(e.Column, 0);

                    this.listViewRS.ListViewItemSorter = sorter;

                    this.m_SortModeCol1 = 1;

                    this.listViewRS.Columns[0].Text = "用户助记符↑";

                    this.listViewRS.Columns[1].Text = "用户号码";

                }

                else

                {

                    ListViewSorter sorter = new ListViewSorter(e.Column, 1);

                    this.listViewRS.ListViewItemSorter = sorter;

                    this.m_SortModeCol1 = 0;

                    this.listViewRS.Columns[0].Text = "用户助记符↓";

                    this.listViewRS.Columns[1].Text = "用户号码";

                }

            }

            else//第二列

            {

                if (this.m_SortModeCol2 == 0)//增序

                {

                    ListViewSorter sorter = new ListViewSorter(e.Column, 0);

                    this.listViewRS.ListViewItemSorter = sorter;

                    this.m_SortModeCol2 = 1;

                    this.listViewRS.Columns[0].Text = "用户助记符";

                    this.listViewRS.Columns[1].Text = "用户号码↑";

                }

                else

                {

                    ListViewSorter sorter = new ListViewSorter(e.Column, 1);

                    this.listViewRS.ListViewItemSorter = sorter;

                    this.m_SortModeCol2 = 0;

                    this.listViewRS.Columns[0].Text = "用户助记符";

                    this.listViewRS.Columns[1].Text = "用户号码↓";

                }

            }

        }

 

    //用于ListView排序的类,继承于IComparer

    public class ListViewSorter : System.Collections.IComparer

    {

        private int sortIndex;

        private int sortMode;

 

        public ListViewSorter(int p_SortIndex,int p_SortMode)

        {

            this.sortIndex = p_SortIndex;

            this.sortMode = p_SortMode;

        }

 

        public int Compare(object x, object y)

        {

            ListViewItem item1, item2;

            item1 = (ListViewItem)x;

            item2 = (ListViewItem)y;

            string strX, strY;

            strX = item1.SubItems[this.sortIndex].ToString();

            strY = item2.SubItems[this.sortIndex].ToString();

 

            if (this.sortMode == 0)//增序

            {

                if (string.Compare(strX, strY) < 0)

                {

                    return -1;

                }

                else if (string.Compare(strX, strY) == 0)

                {

                    return 0;

                }

                else

                {

                    return 1;

                }

            }

            else

            {

                if (string.Compare(strX, strY) < 0)

                {

                    return 1;

                }

                else if (string.Compare(strX, strY) == 0)

                {

                    return 0;

                }

                else

                {

                    return -1;

                }

            }

        }

    }

 

转载于:https://www.cnblogs.com/morvenhuang/archive/2006/09/24/513509.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值