jquery easyui combobox加载数量过多引起渲染页面缓慢问题

来源:互联网 发布:百度大数据合作 编辑:程序博客网 时间:2024/06/08 00:06

         有些时候,当我们用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原理一致,替换前缀就可用,如果以后找到更好的方法解决,再来跟新!


0 0