关于 dataTable 组件使用

Posted wukongk

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于 dataTable 组件使用相关的知识,希望对你有一定的参考价值。

偶然发现一个叫 dataTable  的组件,觉得很好用,于是研究了一番,下面是代码

var lang = 
				"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": "末页",
					"sJump": "跳转"
				,
				"oAria": 
					"sSortAscending": ": 以升序排列此列",
					"sSortDescending": ": 以降序排列此列"
				
			;
			var table = $("#sample").dataTable(
					language:lang,  //提示信息
					autoWidth: false,  //禁用自动调整列宽
					processing: true,  //隐藏加载提示,自行处理
					serverSide: true,  //启用服务器端分页
					searching: true,  //禁用原生搜索
					search: 
				    "search": ""
				  ,
					ordering:false,
					renderer: "bootstrap",  //渲染样式:Bootstrap和jquery-ui
					lengthChange: false,
					pageLength:15,
					rowId: '_id',
					pagingType: "simple_numbers",  //分页样式:simple,simple_numbers,full,full_numbers
					columnDefs: [
						"targets": 'nosort',  //列的样式名
						"orderable": false    //包含上样式名‘nosort’的禁止排序
					],
					ajax: function (data, callback, settings) 
						//封装请求参数
						var param = ;
						param.keyword = data.search.value;
						param.limit = data.length;//页面显示记录条数,在页面显示每页显示多少项的时候
						param.start = data.start;//开始的记录序号
						param.page = (data.start / data.length)+1;//当前页码
						//console.log(param);
						//ajax请求数据
						$.ajax(
							type: "POST",
							url: "/payment/result",
							cache: false,  //禁用缓存
							data: param,  //传入组装的参数
							dataType: "json",
							success: function (result) 
								//console.log(result);

								//封装返回数据
								var returnData = ;
								returnData.draw = data.draw;//这里直接自行返回了draw计数器,应该由后台返回
								returnData.recordsTotal = result.totalCount;//返回数据全部记录
								returnData.recordsFiltered = result.totalCount;//后台不实现过滤功能,每次查询均视作全部结果
								returnData.data = result.payment;//返回的数据列表
								//调用DataTables提供的callback方法,代表数据已封装完成并传回DataTables进行渲染
								//此时的数据需确保正确无误,异常判断应在执行此回调前自行处理完毕
								callback(returnData);
							
						);
					,
					//列表表头字段
					columns: [ 
						  
							className: "center",  
							orderable : false,  
							bSortable : false,  
							data : "_id",  
							render : function(data, type, row, meta)   
								var content = '<label class="position-relative">';  
								content += '<input type="checkbox" class="ace" value="' + data + '" />';  
								content += '<span class="lbl"></span>';  
								content += '</label>';  
								return content;  
							  
						,  
						 
							"data": "type",
							render:function(date,type,full) 
								var content = null;
								if(date == 1) 
									content = '收入';
								 else 
									content = '支出';
								
								return content;
							
					 	,
						 "data": "name" ,
						 "data": "price" ,
						 "data": "product_type" ,
						 "data": "meta.createAt",
							render:function(date,type,full) 
								return date.slice(0,10);
							
						,
							bSortable : false,  
							visible : true, 
							data : "_id",     
							render : function(data, type, full)   
								var content = '<div class="hidden-sm hidden-xs action-buttons">'+
									'<a href="/payment/detail/' + data + '" class="blue">'+
										'<i class="ace-icon fa fa-search-plus bigger-130"></i>'+
									' </a>'+
									'<a href="javascript:void(0);" data-id="' + data + '" class="delete_btn red">'+
										'<i class="ace-icon fa fa-trash-o bigger-130"></i>'+
									'</a>'+
								'</div>'+
									'<div class="hidden-md hidden-lg">'+
									'  <div class="inline position-relative">'+
									'    <button data-toggle="dropdown" data-position="auto" class="btn btn-minier btn-yellow dropdown-toggle"><i class="ace-icon fa fa-caret-down icon-only bigger-120"></i></button>'+
										'<ul class="dropdown-menu dropdown-only-icon dropdown-yellow dropdown-menu-right dropdown-caret dropdown-close">'+
										' <li><a href="/payment/detail/' + data + '" data-rel="tooltip" title="" data-original-title="View" class="tooltip-info"><span class="blue"><i class="ace-icon fa fa-search-plus bigger-120"></i></span></a>'+
										'<li><a data-rel="tooltip" title="" data-original-title="Delete" data-id="' + data + '" class="delete_btn tooltip-error"><span class="red"><i class="ace-icon fa fa-trash-o bigger-120"></i></span></a></li>'+
									'</ul></div></div>';
								return content;  
							   
						 
					]
			).api();
			//此处需调用api()方法,否则返回的是JQuery对象而不是DataTables的API对象
		);


以上是关于关于 dataTable 组件使用的主要内容,如果未能解决你的问题,请参考以下文章

DataTable 升序排列日期

jQuery dataTables:点击广告应该对所有列进行降序然后升序排序

jquery-datatables 怎么自定义排序

使用 ReactJS 的 Datatables.net,在一列中渲染一个 ReactJS 组件

dataTables jquery - 如何添加排序图像/图标?

DotNet.Highcharts:成本未针对正确日期绘制