`
364434006
  • 浏览: 586583 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

combobox使用dwr请求远程数据之传递参数

 
阅读更多
combobox关于dwr请求传递参数目前好像没有直接提供属性设置,像datagrid的param属性.
通过查看源码发现.其实在构建cmobobox的时候,是提供了param参数设置的
$.fn.combobox = function(options, param){...}
于是在使用的时候声明如下
$('#cc').combobox({  
	    url:UserAction.getUsers,  
	    valueField:'id',  
	    textField:'text'
},{id:1}); 
但是结果发现属性id并没有传递到后台.
再跟进代码发现,在构建combobox的时候调用了一个request方法来请求远程数据.
request(this);
问题好像已经发现了,我们构建时候设置的参数并没有传递到request中,也就在并没有使用我们设置的参数.为什么这么做甚是不解.

问题找到就好修改了,有两种修改方式
1.直接修改源码,将构造函数中request(this)修改成request(this,null,param);
2.重写dwrloader
第一种方式并不推荐,这里修改了以后就要增加对这里的维护成本
第二种推荐使用。
直接上代码
--构建combobox
$('#cc').combobox({  
	    url:UserAction.getUsers,  
	    valueField:'id',  
	    textField:'text',
	    loader:myLoader({id:"101"}),
	    onLoadSuccess:function(){
			$('#cc').combobox('select',-1);
	    }
}); 

--重写dwrloader
function myLoader(parameter){
	return function(param, success, error){
		var opts = $(this)['combobox']('options');
		if (!opts.url) return false;
		var dwrFunc = eval(opts.url);
		dwrFunc(parameter, {
			callback: function(data){
				data.unshift({text:'全部',id:-1});
				success(data);
			},
			exceptionHandler: function(){
				error.apply(this, arguments);
			}
		});
	};
}
分享到:
评论
2 楼 yh1350 2013-06-17  
官方API里有这个示例
1 楼 yh1350 2013-06-17  
还有一个方法,
onBeforeLoad: function(param){
param.id = 2;
param.language = 'js';
}

相关推荐

Global site tag (gtag.js) - Google Analytics