本文主要是介绍jquery easyui combobox加载数量过多引起渲染页面缓慢问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
有些时候,当我们用easyui combobox控件加载页面数据的时候,由于数据量过多(几千几万),而且如果操作频繁的话,进而会引起需要加载半天才能去打开下拉面板,还有可能卡死。其实这种问题主要时间浪费在了渲染下拉面板上面,作者在遇到这种问题的时候也没找到什么解决的,只有改变控件的加载方式,我使用的是筛选加载,即通过输入的文字去加载下拉面板的数据,这样就缓冲了部分时间:
//初始新增下拉框$CommonUI.getComboBox('#addorganType').combobox({ url:$WEB_ROOT_PATH+'/basecode/baseCodeCtrl.htm?BLHMI=findBaseCode&dto.baseCode.codeSystem=organType',valueField:'id',textField:'text',onSelect:function(record){$.ajax({url:$WEB_ROOT_PATH+'/basecode/baseCodeCtrl.htm?BLHMI=findBaseCodeByParameters',type: 'post',dataType: 'json',data:{"dto.baseCode.codeSystem":"organDic","dto.baseCode.comments":record.text},success: function(datas){var text='';//加载combobox,暂时只支持筛选加载下拉数据-注:数量太多时,时间耗在了渲染界面上$CommonUI.getComboBox('#addorganName').combobox({ valueField:'id', textField:'text',data:[],onChange:function(newValue, oldValue){var loadData = new Array();text=newValue;for(var i in datas){if(text!=''&&(datas[i].id.indexOf(text)>-1||datas[i].text.indexOf(text)>-1)){loadData.push(datas[i]);}}$CommonUI.getComboBox('#addorganName').combobox('loadData',loadData);},onLoadSuccess:function(){if(text!=''){$CommonUI.getComboBox('#addorganName').combobox('showPanel');}else{$CommonUI.getComboBox('#addorganName').combobox('hidePanel');}}});}});}});
我用的是webui控件,跟easyui原理一致,替换前缀就可用,如果以后找到更好的方法解决,再来跟新!
这篇关于jquery easyui combobox加载数量过多引起渲染页面缓慢问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!