jQuery表格插件flexigrid扩展
populate: function () { //get latest data
if (this.loading) return true;
if (p.onSubmit)
{
var gh = p.onSubmit();
if (!gh) return false;
}
this.loading = true;
if (!p.url) return false;
$('.pPageStat',this.pDiv).html(p.procmsg);
$('.pReload',this.pDiv).addClass('loading');
$(g.block).css({top:g.bDiv.offsetTop});
if (p.hideOnSubmit) $(this.gDiv).prepend(g.block); //$(t).hide();
if ($.browser.opera) $(t).css('visibility','hidden');
if (!p.newp) p.newp = 1;
if (p.page>p.pages) p.page = p.pages;
//var param = {page:p.newp, rp: p.rp, sortname: p.sortname, sortorder: p.sortorder, query: p.query, qtype: p.qtype};
var param = [
{ name : 'page', value : p.newp }
,{ name : 'rp', value : p.rp }
,{ name : 'sortname', value : p.sortname}
,{ name : 'sortorder', value : p.sortorder }
,{ name : 'query', value : encodeURI(p.query)}
,{ name : 'qtype', value : p.qtype}
,{ name : 'time', value : new Date().getTime()}
];
if (p.params){
for (var pi = 0; pi < p.params.length; pi++) param[param.length] = p.params[pi];
}
//Modify by alex to support custom function to handle data.
if(typeof(p.url) === 'string'){
$.ajax({
type: p.method,
url: p.url,
data: param,
cache:false,
dataType: p.dataType,
success: function(data){g.addData(data);},
error: function(XMLHttpRequest, textStatus, errorThrown) { try { if (p.onError) p.onError(XMLHttpRequest, textStatus, errorThrown); } catch (e) {} }
});
}else if(typeof(p.url) === 'function'){
p.url.apply(this,[param]);
}
},
通过这样的修改,使得flexigrid的url属性可以支持传入function对象,并对其进行回调。通常的应用是当Server端返回的数据不满足flexigrid期望的格式时,可以自己写一个function来获取数据并将数据加工成flexigrid可识别的格式,然后就可以显示出来了。
这种修改方式的话是可以保证刷新,查询,分页等功能不被破坏的。
浙公网安备 33010602011771号