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可识别的格式,然后就可以显示出来了。

这种修改方式的话是可以保证刷新,查询,分页等功能不被破坏的。

posted on 2011-03-23 23:33  nixil  阅读(1122)  评论(0编辑  收藏  举报