按<input style="cursor:hand;" class="button2" type="button" value="工號" name="btnTest" Title="選擇" OnClick="SelGen(0)"><input style="cursor:hand;" class="button2" type="button" value="姓名" name="B3" Title="選擇" OnClick="SelGen(1)"><input style="cursor:hand;" class="button2" type="button" value="部門" name="B3" Title="選擇" OnClick="SelGen(2)"><input style="cursor:hand;" class="button2" type="button" value="職務" name="B3" Title="選擇" OnClick="SelGen(3)">排序
<select id="GenSel" size="10" style="font-family: 細明體; font-size: 9pt; height: 450; width:100%" multiple>
<option value="000387|魏秀瓊|品保部|主管">000387|魏秀瓊|品保部|主管</option>
<option value="000195|高緒軍|品保部|員工">000195|高緒軍|品保部|員工</option> 
<option value="002341|閻花藏|市場部|員工">002341|閻花藏|市場部|員工</option>
<option value="003232|鄭光娥|銷售部|經理">003232|鄭光娥|銷售部|經理</option>
</select>
<script language="javascript">
Array.prototype.cnsort = function(){//此處做排序處理
return this.sort();
}function SelGen(index){
var select = document.getElementById("GenSel");
var tempArray = new Array();
var keyArray = new Array();
var length = select.options.length;
for(i=0;i<length;i++){
var item = select.options[0].value;
var arrKey = item.split("|");
var key = arrKey[index];
keyArray[i] = key+i;
tempArray[key.toString()+i] = item;
select.options.remove(0);
}
keyArray = keyArray.cnsort();
for(i=0;i<keyArray.length;i++){
var value = tempArray[keyArray[i]];
select.options.add(new Option(value,value));
}
}
</script>

解决方案 »

  1.   

    中文的排序,思路就是:
    按顺序取出各个字符,将之转换为对应的拼音字符串,例如
    "中国"=>"ZG"
    然后根据这个拼音字符串来做排序。
    如何根据汉字得到拼音,可以用字典也可以用其他方法,代码就不写了。
      

  2.   

    我用PHP写的取拼音
    //------------------------取汉字拼音的第一个字母-----------------------
    function get_pinyin_first_char($source_str, $mode='c'){
    $mode=strtolower($mode);
    if($mode!='c' and $mode!='s'){
    $mode='c';  //默认为取串首拼音索引
    }
    $nLen=strlen($source_str); //字串长度
    $byFlag=0;  //汉字标志:0英文字符,1汉字第1字节,2汉字第2字节
    $hzcode=0;  //汉字内码
    $result='';
    for($i=0;$i<$nLen;$i++){
    $ch=ord(substr($source_str,$i,1)); //取一个字节的ascii码
    if($ch > 0x80){  //汉字字符
    $byFlag++;
    }else{
    if($byFlag==1){  //半个汉字
    $result.='?';
    }
    $byFlag=0;  //清除标志
    $hzcode=0;
    }
    switch($byFlag){
    case 0 : $result.=chr($ch); break; //英文字符
    case 1 :  //汉字第1字节
    if( $i < $nLen - 1 ){  //非输入字串结束
    $hzcode=$ch;
    }else{  //输入字串结束
    $result.='?';
    }
    break; case 2 :  //汉字第2字节
    $byFlag=0;  //清除标志
    $hzcode=($hzcode<<8)+$ch; //汉字内码
    switch($hzcode){
    case $hzcode>=0xB0A1 and $hzcode<=0xB0C4 : $result.='A'; break;
    case $hzcode>=0xB0C5 and $hzcode<=0xB2C0 : $result.='B'; break;
    case $hzcode>=0xB2C1 and $hzcode<=0xB4ED : $result.='C'; break;
    case $hzcode>=0xB4EE and $hzcode<=0xB6E9 : $result.='D'; break;
    case $hzcode>=0xB6EA and $hzcode<=0xB7A1 : $result.='E'; break;
    case $hzcode>=0xB7A2 and $hzcode<=0xB8C0 : $result.='F'; break;
    case $hzcode>=0xB8C1 and $hzcode<=0xB9FD : $result.='G'; break;
    case $hzcode>=0xB9FE and $hzcode<=0xBBF6 : $result.='H'; break;
    case $hzcode>=0xBBF7 and $hzcode<=0xBFA5 : $result.='J'; break;
    case $hzcode>=0xBFA6 and $hzcode<=0xC0AB : $result.='K'; break;
    case $hzcode>=0xC0AC and $hzcode<=0xC2E7 : $result.='L'; break;
    case $hzcode>=0xC2E8 and $hzcode<=0xC4C2 : $result.='M'; break;
    case $hzcode>=0xC4C3 and $hzcode<=0xC5B5 : $result.='N'; break;
    case $hzcode>=0xC5B6 and $hzcode<=0xC5BD : $result.='O'; break;
    case $hzcode>=0xC5BE and $hzcode<=0xC6D9 : $result.='P'; break;
    case $hzcode>=0xC6DA and $hzcode<=0xC8BA : $result.='Q'; break;
    case $hzcode>=0xC8BB and $hzcode<=0xC8F5 : $result.='R'; break;
    case $hzcode>=0xC8F6 and $hzcode<=0xCBF9 : $result.='S'; break;
    case $hzcode>=0xCBFA and $hzcode<=0xCDD9 : $result.='T'; break;
    case $hzcode>=0xCDDA and $hzcode<=0xCEF3 : $result.='W'; break;
    case $hzcode>=0xCEF4 and $hzcode<=0xD188 : $result.='X'; break;
    case $hzcode>=0xD1B9 and $hzcode<=0xD4D0 : $result.='Y'; break;
    case $hzcode>=0xD4D1 and $hzcode<=0xD7F9 : $result.='Z'; break;
    default : $result.='?'; break;
    }
    break;
    }
    if($mode=='c' and $result!=''){
    break;
    }
    }
    return $result;
    }
      

  3.   

    Click the link to solve your problem.Good luck!