combobox关于dwr请求传递参数目前好像没有直接提供属性设置,像datagrid的param属性.
通过查看源码发现.其实在构建cmobobox的时候,是提供了param参数设置的
再跟进代码发现,在构建combobox的时候调用了一个request方法来请求远程数据.
问题找到就好修改了,有两种修改方式
1.直接修改源码,将构造函数中request(this)修改成request(this,null,param);
2.重写dwrloader
第一种方式并不推荐,这里修改了以后就要增加对这里的维护成本
第二种推荐使用。
直接上代码
--构建combobox
--重写dwrloader
通过查看源码发现.其实在构建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);
}
});
};
}