zoukankan      html  css  js  c++  java
  • .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;

                    }

                }

            }

        }

     

  • 相关阅读:
    重构FourlegLayers控件
    XNA 没有经过Content Pipeline对内容做Alpha预处理解决办法
    山寨DNF
    XNA中 SpriteSortMode 与 BlendState 《摘自王磊文章》
    HDU1060 Leftmost Digit
    HDU1095 A hard puzzle
    magento安装心得
    关于小米手机网站抢购的一点技术分析
    MVC3和MVC4内置Razor引擎的差异
    查看进程
  • 原文地址:https://www.cnblogs.com/morvenhuang/p/513509.html
Copyright © 2011-2022 走看看