在考核系統中,對于combobox使用了很多,真是讓人歡喜讓人悲呀...這是幾點使用的心得
1. 級聯菜單。
Easyui中combobox的級聯菜單還是很友善使用的。,拖放兩個combobox控件,設定onSelect方法即可。
注意:在級聯的時候可能第二級菜單會随着第一級菜單的改變不斷增加清單,是以reload之前clear一下。
例如:
<a>年份</a>
<input id="year" name="year" class="easyui-combobox" data-options="
editable:false,
panelHeight:'auto',
valueField: 'yeartime',
textField: 'yeartime',
url: 'CountyQuality.ashx?test=QueryYear',
onSelect: function(rec){
var url = 'CountyQuality.ashx?test=QueryProperty&yeartime='+rec.yeartime;
$('#target').combobox('clear'),
$('#target').combobox('reload', url);
}" />
<br />
<br />
<a>考核名額</a>
<input id="target" name="target" class="easyui-combobox" data-options="
editable:false,
valueField:'id',
textField:'name',
onSelect:function(){
QueryData();
}
" />
2.頁面重新整理後如何顯示重新整理前的combobox值。
有的可能會說設定一個隐藏控件,将combobox值賦予控件value,重新整理後顯示,那麼重新整理後你還有值嗎?
解決辦法:送出表單。
2.1 将form中控件也就是包括combobox控件的form,送出表單到自身
$("#sessionRefresh").submit();
#内是form的id,送出表單後在頁面初始化的方法内擷取表單值。
//窗體加載時觸發的事件,擷取時間
$(function () {
var getYear = "<%=Request.Params["year"]%>"; //表單送出後的年份
}
Request.Params[""]方法,[ ]内是控件的name名稱,這個方法相當于Request.QueryString()和Request.Form()的結合體吧,很好用。
2.2 循環比對combobox清單項的值,選中該值為預設項。
頁面重新整理後,由于combobox自身的url使其初始化就有清單項,所需的隻是将重新整理前的值成為預設值。
var countyName = $('#CountryInfo').combobox('getData');
for (var i = 0; i < countyName.length; i++) {
//alert(countyName[i].departmentname)
if (unitName == countyName[i].departmentname) {
$('#CountryInfo').combobox('select', countyName[i].cityid); //循環判斷,如果某項一緻,則該項選中
}
}
這裡unitName即為頁面擷取的值,相當于上面的getYear。通過easyui中getData的方法,使下拉清單項成為一個實體,循環比對實體的textField值,然後通過select方法選中其valueField即可。
Easyui的文檔很齊全,不過有些功能都沒有清楚說明解決辦法,研究了幾天終于解決了這個小難點,希望對使用的朋友有幫助吧。