日期:2014-05-20  浏览次数:20502 次

请问这样的排序,应该如何实现.
一个英文产品表,按英文字母顺序来排列.例如
a2,a4,b5,b1,c4,c7,d6,7-1,8-2,....等产品名称.

在前台页面能够以这种排序显示:

A:   a2,a4  
B:   b5,b1
C:   c4,c7
D:   ....
      7-1,8-2

能够判断相同字母的开始和结束,但在前台要按这样的顺序来排放,不知道
如何给这些数据绑定.

希望大家给个思路或方法,谢谢!

------解决方案--------------------
中间跳号的怎么办? 如: b有 b1,b3,b5. 就只显示: b:b1,b5?
------解决方案--------------------
给分不少啊, 我用控制台调试通过,如果你是用asp.net , 用变量al(ArrayList类型)进行数据绑定就可以了

using System;
using System.Collections;
using System.Collections.Specialized;
public class test
{
public static void Main()
{
string str = "a8,a4,b5,b1,c4,c7,d6,7-1,8-2 ";
string[] strArr = str.Split( ', ');

ArrayList al = new ArrayList(strArr.Length);
foreach(string v in strArr)
al.Add(v);

al.Sort();


NameValueCollection nc = new NameValueCollection();

foreach(object a in al)
{
string s = a as string;
if(char.IsLetter(s[0]))
{
nc.Add(char.ToUpper(s[0]).ToString(), s);
}
else
{
nc.Add(null, s);
}
}


al.Clear();

strArr = nc.AllKeys;

foreach(string key in strArr)
{
al.Add(key + ((key == null)? string.Empty : ": ") + nc[key]);
}

foreach(object obj in al)
{
Console.WriteLine(obj);
}
}
}
------解决方案--------------------
<script language= "javascript " defer>
var str = "a8,a4,b5,b1,c4,c7,d6,7-1,8-2 ";
var arr = str.split( ", ");

var FirstChar = arr[0].substr(0,1).toUpperCase();
var s = FirstChar + ": ";

for(var i=0;i < arr.length;i++)
{
if(arr[i].substr(0,1).toUpperCase() == FirstChar)
{
s += arr[i] + " ";
}
else
{
FirstChar = arr[i].substr(0,1).toUpperCase();
s += " <br> " + FirstChar+ ": " + arr[i] + " ";
}
}
document.getElementById( "divID ").innerHTML = s;
</script>
------解决方案--------------------
用datagrid的多表头应当可以实现这个功能
主要是找的时候进行选择
你用cpp2017(慕白兄) ( ) 信誉:100 Blog 这位朋友的代码试试
多表头的信息你可以看小山的BLOG