在数据库中有用户表(userid,username,sex),username存储的是中文名字,在界面上我用的是listview显示(当然用什么显示不是重点,对了,数据时放在dataset中的),现在我界面上有个功能按钮就是分组显示,包括按姓名分组,和 按性别分组,按性别分组就不用说了,按姓名分组想要达到的效果是:当用户点击了该按钮之后,在listview中会把姓氏相同的名字放在一起,而且姓氏排序按照姓氏拼音的首字母的E文顺序来排,小弟想向大家请教此算法思路,希望给指点一下,定会高分相赠!拜谢...........

解决方案 »

  1.   

    直接使用,sql命令进行姓名的排序,可以吗,我在vb.net中用datagridview实现过
      

  2.   

    使用listveiwgroup
    http://dev.firnow.com/course/4_webprogram/asp.net/netjs/2007101/75692.html
      

  3.   

    ListViewGroup group1 = new ListViewGroup(""); 分组Select * 
    From tb
    Order By Name
    Collate Chinese_PRC_Stroke_ci_as 
    汉字首字母查询处理用户定义函数
    CREATE FUNCTION f_GetPY(@str nvarchar(4000))
    RETURNS nvarchar(4000)
    AS
    BEGIN
        DECLARE @py TABLE(
            ch char(1),
            hz1 nchar(1) COLLATE Chinese_PRC_CS_AS_KS_WS,
            hz2 nchar(1) COLLATE Chinese_PRC_CS_AS_KS_WS)
        INSERT @py SELECT 'A',N'吖',N'鏊'
        UNION  ALL SELECT 'B',N'八',N'簿'
        UNION  ALL SELECT 'C',N'嚓',N'错'
        UNION  ALL SELECT 'D',N'哒',N'跺'
        UNION  ALL SELECT 'E',N'屙',N'贰'
        UNION  ALL SELECT 'F',N'发',N'馥'
        UNION  ALL SELECT 'G',N'旮',N'过'
        UNION  ALL SELECT 'H',N'铪',N'蠖'
        UNION  ALL SELECT 'J',N'丌',N'竣'
        UNION  ALL SELECT 'K',N'咔',N'廓'
        UNION  ALL SELECT 'L',N'垃',N'雒'
        UNION  ALL SELECT 'M',N'妈',N'穆'
        UNION  ALL SELECT 'N',N'拿',N'糯'
        UNION  ALL SELECT 'O',N'噢',N'沤'
        UNION  ALL SELECT 'P',N'趴',N'曝'
        UNION  ALL SELECT 'Q',N'七',N'群'
        UNION  ALL SELECT 'R',N'蚺',N'箬'
        UNION  ALL SELECT 'S',N'仨',N'锁'
        UNION  ALL SELECT 'T',N'他',N'箨'
        UNION  ALL SELECT 'W',N'哇',N'鋈'
        UNION  ALL SELECT 'X',N'夕',N'蕈'
        UNION  ALL SELECT 'Y',N'丫',N'蕴'
        UNION  ALL SELECT 'Z',N'匝',N'做'
        DECLARE @i int
        SET @i=PATINDEX('%[吖-做]%' COLLATE Chinese_PRC_CS_AS_KS_WS,@str)
        WHILE @i>0
            SELECT @str=REPLACE(@str,SUBSTRING(@str,@i,1),ch)
                ,@i=PATINDEX('%[吖-做]%' COLLATE Chinese_PRC_CS_AS_KS_WS,@str)
            FROM @py
            WHERE SUBSTRING(@str,@i,1) BETWEEN hz1 AND hz2
        RETURN(@str)
    END
    GO
      

  4.   

    您的PL/SQL写的好长啊,看着有点晕,谢谢了,可是已经结贴了,没分了哈