Jquery datatables 重新加载数据

Posted 清澈@Cherry

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jquery datatables 重新加载数据相关的知识,希望对你有一定的参考价值。

      Datatables这个表格控件只能说实在太强大了,支持很多的扩展,也有对应的中文网站,上面有很多的解决方案,项目中有一个界面,需要使用表格来展示,不过数据很少,只有5列,所以就没采用后台分页的形式,直接点击查询,通过发送ajax,每次判断表格是否已经初始化,如果已经初始化,则清空之前的数据,重新生成一个表格,如下js:

     

var WageSummary = function()  // 这个js可以放在jsp的ready函数里面进行下载,对查询按钮进行监听:
	return 
		init : function() 
   // 查询按钮监听
	$("#query").click(
		 function() 
			var wageBeginDate = document.getElementById("wageBeginDate").value;
			var wageEndDate = document.getElementById("wageEndDate").value;
            // 刷新表格数据,2016年11月8日09:42:46
			$.ajax(
				url : "wageSummary.action",
				type : "POST",
				async : false,
				data : 
						"wageBeginDate" : wageBeginDate,
						"wageEndDate" : wageEndDate
				,
				dataType : "json", // ajax返回值设置为text(json格式也可用它返回,可打印出结果,也可设置成json)
				success : function(data) 
					if (data == null) 
						alert("获取数据失败,请重新选择日期");
						return false;
					

				$('#sample_1').show();
				if (typeof(wageSummaryTable) == "undefined") 
					wageSummaryTable = $('#sample_1').dataTable(
						"aLengthMenu" : [[10,20,50,100,-1 ],[10,20,50,100,"All" ] ],
						"iDisplayLength" : 10,
						"sDom": 'T<"clear">rt<"float_left"i><"float_right_nexpage"p><"float_right_display"l>',
						"oLanguage" : oLanguageData,
						"aoColumns" : aoColumnsData,
						"aaData" : data,
						"bDestroy" : true,
						"retrieve": true,//保证只有一个table实例
						"aoColumnDefs": [
									  "sType": "html-percent", "aTargets": [0] ,  //指定列号使用自定义排序
										 ],
									);
									else
													wageSummaryTable.fnClearTable();//清空数据.fnClearTable();//清空数据
wageSummaryTable.fnDestroy(); //还原初始化了的datatable
wageSummaryTable = $('#sample_1').dataTable(
		
				"aLengthMenu" : [[10,20,50,100,-1 ],[10,20,50,100,"All" ] ],
				"iDisplayLength" : 10,
				"sDom": 'T<"clear">rt<"float_left"i><"float_right_nexpage"p><"float_right_display"l>',
				"oLanguage" : oLanguageData,
				"aoColumns" : aoColumnsData,
				"aaData" : data,
				"bDestroy" : true,
				"retrieve": true,//保证只有一个table实例
				"aoColumnDefs": [
					 "sType": "html-percent", "aTargets": [0] ,    //指定列号使用自定义排序
						],
														
						);
					
												
,
				error : function(data) 
					alert("获取数据失败,请重新选择日期");
				
	);

);

		
	

();

var oLanguageData = 
	"sProcessing" : "处理中...",
	"sLengthMenu" : "显示 _MENU_ 项结果",
	"sZeroRecords" : "没有匹配结果",
	"sInfo" : "显示第 _START_ 至 _END_ 项结果,共 _TOTAL_ 项",
	"sInfoEmpty" : "显示第 0 至 0 项结果,共 0 项",
	"sInfoFiltered" : "(由 _MAX_ 项结果过滤)",
	"sInfoPostFix" : "",
	"sSearch" : "搜索:",
	"sUrl" : "",
	"sEmptyTable" : "表中数据为空",
	"sLoadingRecords" : "载入中...",
	"sInfoThousands" : ",",
	"oPaginate" : 
		"sFirst" : "首页",
		"sPrevious" : "上页",
		"sNext" : "下页",
		"sLast" : "末页"
	,
	"oAria" : 
		"sSortAscending" : ": 以升序排列此列",
		"sSortDescending" : ": 以降序排列此列"
	
;

// 列的定义
var aoColumnsData = [


	"mData" : "positionRank"
,
/*
 * 最高
 */

	"mData" : "mostHigh"
,
/*
 * 最低
 */

	"mData" : "mostlow"
,
/*
 * 平均
 */

	"mData" : "wageAverage"
,
/*
 * 人数
 */

	"mData" : "amount"


];

         2.注意的是表格的变量是一个全局的,放在一个script里面就好,我的是这样的:

 

 

	<script>
			    var wageSummaryTable;
			    //发ajax获取有数据的月份
			    var wageMonths=;//从数据库中查询有数据的月份list集合

       3.第二个注意点是使用的是datatables的1.10版本,所以要使用清空数据的函数的话,就可以使用:

        wageSummaryTable.fnClearTable();//清空数据.fnClearTable();//清空数据
        wageSummaryTable.fnDestroy(); //还原初始化了的datatable


      如果你使用了后台分页的形式的话,每次点击查询按钮需要重新加载url的话,就可以参考我的这个链接:后台刷新url

 

 

以上是关于Jquery datatables 重新加载数据的主要内容,如果未能解决你的问题,请参考以下文章

Jquery datatables 重新加载数据

jquery datatable ajax 获取数据/重新加载

无法重新初始化 JQuery DataTable

DataTables 警告:table id=example - 无法重新初始化 DataTable - jQuery

使用 jQuery ajax 调用重新加载 DataTable 内容

从服务器 MVC 重新加载 JQuery 数据表