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

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

你可能感兴趣的:(flexigrid)