关于easyui combobox级联 动态加载数据的疑问!

漠末 2014-09-27 12:27:24
今天做两个combobox级联的时候遇到了麻烦!
当我选择这样重新加载数据的时候。

onSelect: function(rec){
var url= '${pa;geContext.request.contextPath}/newsType/all?level='+rec.text
$('#parentId').combobox('clear');
$('#parentId').combobox('reload');
}

总会出现二次渲染,第一次是把原始的url提交一次,第二次才会使用我更新的url更新。

而当我选择这样更新的时候。
var lvl=document.getElementById("level").value;
parent.$.messager.progress('close');
$('#level').combobox({
url:'${pageContext.request.contextPath}/newsType/level',
valueField:'id',
textField:'text',
editable:false,
onSelect: function(rec){
lvl=rec.text;
}
})
$('#parentId').combobox({
url: '${pageContext.request.contextPath}/newsType/all?level='+lvl,
valueField:'id',
textField:'text',
required:false,
editable:false,

});

每次只请求了一次,但请求的url始终是第一次设置url,以后不论我怎么在onselect里面改变lvl 的值,请求的url始终没变。
求高手解答,怎么才能动态的控制combobox的动态加载,且每次只正确的请求一次!
...全文
405 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
漠末 2014-09-29
  • 打赏
  • 举报
回复
事实证明,被级联的那个combobox主要设置了url.每次更新数据或者更新url的时候都会被提交一次,最后我找到的解决办法是,使用第一个combobox去获取第二个combobox 需要的数据,而被级联的那个combobox就不再设置url了!
	var lvl=document.getElementById("level").value;
		parent.$.messager.progress('close');
			$('#level').combobox({
			url:'${pageContext.request.contextPath}/newsType/level',
			valueField:'id',   
		    textField:'text',
		   	editable:false,
			panelHeight:'auto',
			onLoadSuccess:function(){
				loadParent(lvl);
			},
			onChange: function(newValue,oldValue){  
				
				loadParent(newValue);
				$('#parentId').combobox("clear");
                
      		},
		}); 
		function loadParent(value){	
			if(value!=0){
					$('#parentId').combobox({required:true});
				}else{
					$('#parentId').combobox({required:false});
				}
           		$.ajax({
					type: "POST",
					url: '${pageContext.request.contextPath}/newsType/all?level='+value,
					cache: false,
					dataType : "json",
					success: function(data){
						$("#parentId").combobox("loadData",data);		
					}
				});          
		} 
$('#parentId').combobox({
			
		    valueField:'id',   
		    textField:'text',
			required:false,
			editable:false,
			panelHeight:'auto',
		});		
这样实现的功能是,首次载入时,由#level主动索要两个控件的加载数据,而后每次#level改变时,同时更新#parentId
scscms太阳光 2014-09-28
  • 打赏
  • 举报
回复
$('#cc').combobox('reload'); // reload list data using old URL(用原数据重新加载一下) $('#cc').combobox('reload','get_data.php'); // reload list data using new URL(用新链接地址请求数据加载)
scscms太阳光 2014-09-28
  • 打赏
  • 举报
回复
明显应该用第一个方法:
onSelect: function(rec){  
var url= '${pa;geContext.request.contextPath}/newsType/all?level='+rec.text
//$('#parentId').combobox('clear');
//$('#parentId').combobox('reload');
$('#parentId').combobox('reload',url);
}

87,909

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧