1. 程式人生 > >easyui-combobox下拉框滾動條不顯示&Java中的中文排序

easyui-combobox下拉框滾動條不顯示&Java中的中文排序

註明:專案為J2EE專案

1、easyui-combobox下拉框滾動條不顯示:

$("#*").find("input[name='*']").combobox({
																				url : '*',
																				valueField : '*',
																				textField : '*',
																				panelHeight : 'auto',
																				multiple: true ,
																				editable:false <span style="font-family: Arial, Helvetica, sans-serif;">	</span><span style="font-family: Arial, Helvetica, sans-serif;">});</span>
以上是程式碼,不必要的值都用*遮蔽掉了,可以無視。

關鍵在panelHeight屬性。panelHeight設定了下拉框的高度。當下拉框中的資料很大時,其屬性值為auto會造成沒有滾動條,資料無法完全顯示。

解決方法說將auto修改為一個固定的數值。但是這個數值也不能太小。

試過將其修改為10,結果下拉框只有很小的一點,連字都顯示不完全,滾動條更是不存在。

隨後將其更改為400達到了目的,滾動條出現了,且工作無誤。

由於是專案程式碼,沒有過多嘗試,因此至於其值為100、200、300、500的時候會是什麼樣子還沒有詳細研究,準備抽空研究一下,有興趣的朋友也可以玩玩。

至於原理,百度了之後發現有一個解釋說,若panelHeight='auto' ,combobox的滾動條是根據初始資料進行顯示的;而專案中資料都是從後臺資料庫讀取出來的,初始資料是空的,所以不顯示滾動條。

2、Java中的中文排序

其次需要對下拉框中顯示的資料根據中文首字母進行排序。

百度了半天之後根據各種各樣的部落格、文件對程式進行了修改,大概程式如下:

public class A implements Comparable<A>{
<span style="white-space:pre">	</span>private String name;
<span style="white-space:pre">	</span>private String id;
<span style="white-space:pre">	</span>//省略set和get方法
<span style="white-space:pre">	</span>public int compareTo(A arg0){
            return Collator.getInstance(Locale.CHINA).compare(this.getName(),arg0.getName());
      <span style="white-space:pre">	</span>}
}
這是bean中的程式碼。

在combobox呼叫的後臺程式中,在獲取到目標資料的List之後,執行下面這句程式碼就可以對List進行中文排序了:

Collections.sort(list);
排序結果即是根據中文首字母進行的。

但是這樣做還是有一些BUG。

有一些Locale.CHINA中沒有的漢字會排錯位置,排到Z之後。

目前還在思考解決方案,準備參考pinyin4j的原始碼進行修改。