在考核系统中,对于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的文档很齐全,不过有些功能都没有清楚说明解决办法,研究了几天终于解决了这个小难点,希望对使用的朋友有帮助吧。