上周因为需要使用了datatable,可是网上搜索到的要么就是一点点的参数介绍,要么就是几个回调函数的介绍,极少数有比较全面的,所以把自己用到的总结了一下,这其中涉及到服务端的分页,其实datatable都给我们集成好了,用起来是很方便的,话不多说,如下:
关于datatable使用详解:
1、基本参数配置:
要注意的是,要被dataTable处理的table对象,必须有thead与tbody,而且,结构要规整(数据不一定要完整),这样才能正确处理。以下是在进行dataTable绑定处理时候可以附加的参数: |
属性名称 | 取值范围 | 解释 |
bAutoWidth | true or false,default true | 是否自动计算表格各列宽度 |
bDeferRender | 用于渲染的一个参数 | |
bFilter | 开关,是否启用客户端过滤功能 | |
bInfo | 开关,是否显示表格的一些信息 | |
bJQueryUI | 是否使用jquery ui themeroller的风格 | |
bLengthChange | 开关,是否显示一个每页长度的选择条(需要分页器支持) | |
bPaginate | 开关,是否显示(使用)分页器 | |
bProcessing | 开关,以指定当正在处理数据的时候,是否显示“正在处理”这个提示信息 | |
bScrollInfinite | 开关,以指定是否无限滚动(与sScrollY配合使用),在大数据量的时候很有用。当这个标志为true的时候,分页器就默认关闭 | |
bSort | 开关,是否让各列具有按列排序功能 | |
bSortClasses | 开关,指定当当前列在排序时,是否增加classes 'sorting_1','sorting_2' and 'sorting_3',打开后,在处理大数据时,性能有所损失 | |
bStateSave | 开关,是否打开客户端状态记录功能。这个数据是记录在cookies中的,打开了这个记录后,即使刷新一次页面,或重新打开浏览器,之前的状态都是保存下来的 | |
sScrollX | 'disabled' or '100%' 类似的字符串 | 是否开启水平滚动,以及指定滚动区域大小 |
sScrollY | 'disabled' or '200px' 类似的字符串 | 是否开启垂直滚动,以及指定滚动区域大小 |
-- | -- | -- |
选项 | ||
aaSorting | array array[int,string],如[],[[0,'asc'],[0,'desc']] | 指定按多列数据排序的依据 |
aaSortingFixed | 同上 | 同上。唯一不同点是不能被用户的自定义配置冲突 |
aLengthMenu | default [10,25,50,100],可以为一维数组,也可为二维数组,比如:[[10,-1],[10,"All"]] | 这个为选择每页的条目数,当使用一个二维数组时,二维层面只能有两个元素,第一个为显示每页条目数的选项,第二个是关于这些选项的解释 |
aoSearchCols | default null,类似:[null,{"sSearch": "My filter"},null,{"sSearch": "^[0-9]","bEscapeRegex": false}] | 给每个列单独定义其初始化搜索列表特性(这一块还没搞懂) |
asStripClasses | default ['odd','even'],比如['strip1','strip2','strip3'] | 指定要被应用到各行的class风格,会自动循环 |
bDestroy | 用于当要在同一个元素上执行新的dataTable绑定时,将之前的那个数据对象清除掉,换以新的对象设置 | |
bRetrieve | 用于指明当执行dataTable绑定时,是否返回DataTable对象 | |
bScrollCollapse | 指定适当的时候缩起滚动视图 | |
bSortCellsTop | (未知的东东) | |
iCookieDuration | 整数,默认7200,单位为秒 | 指定用于存储客户端信息到cookie中的时间长度,超过这个时间后,自动过期 |
iDeferLoading | 整数,默认为null | 延迟加载,它的参数为要加载条目的数目,通常与bServerSide,sAjaxSource等配合使用 |
iDisplayLength | 整数,默认为10 | 用于指定一屏显示的条数,需开启分页器 |
iDisplayStart | 整数,默认为0 | 用于指定从哪一条数据开始显示到表格中去 |
iScrollLoadGap | 整数,默认为100 | 用于指定当DataTable设置为滚动时,最多可以一屏显示多少条数据 |
oSearch | 默认{ "sSearch": "","bRegex": false,"bSmart": true } | 又是初始时指定搜索参数相关的,有点复杂,没搞懂目前 |
sAjaxDataProp | 字符串,default 'aaData' | 指定当从服务端获取表格数据时,数据项使用的名字 |
sAjaxSource | URL字符串,default null | 指定要从哪个URL获取数据 |
sCookiePrefix | 字符串,default 'SpryMedia_DataTables_' | 当打开状态存储特性后,用于指定存储在cookies中的字符串的前缀名字 |
sDom | default lfrtip (when bJQueryUI is false) or <"H"lfr>t<"F"ip> (when bJQueryUI is true) | 这是用于定义DataTable布局的一个强大的属性,另开专门文档来补充说明吧 |
sPaginationType | 'full_numbers' or 'two_button',default 'two_button' | 用于指定分页器风格 |
sScrollXInner | string default 'disabled' | 又是水平滚动相关的,没搞懂啥意思 |
类型 | 名称 | 说明 |
int | iDisplayStart | 显示的起始索引 |
iDisplayLength | 显示的行数 | |
iColumns | 显示的列数 | |
string | sSearch | 全局搜索字段 |
boolean | bEscapeRegex | 全局搜索是否正则 |
bSortable_(int) | 表示一列是否在客户端被标志位可排序 | |
bSearchable_(int) | 表示一列是否在客户端被标志位可搜索 | |
sSearch_(int) | 个别列的搜索 | |
bEscapeRegex_(int) | 个别列是否使用正则搜索 | |
iSortingCols | 排序的列数 | |
iSortCol_(int) | 被排序的列 | |
sSortDir_(int) | 排序的方向 "desc" 或者 "asc". | |
sEcho | DataTables 用来生成的信息 |
服务器返回的数据格式如下所示 | ||
类型 | 名称 | 说明 |
int | iTotalRecords | 实际的行数 |
iTotalDisplayRecords | 过滤之后,实际的行数。 | |
string | sEcho | 来自客户端 sEcho 的没有变化的复制品, |
sColumns | 可选,以逗号分隔的列名, | |
array array mixed | aaData | 数组的数组,表格中的实际数据。 |
回调函数名称 | 参数 | 返回值 | 默认 | 功能 |
fnCookieCallback | 1.string: Name of the cookie defined by DataTables 2.object: Data to be stored in the cookie 3.string: Cookie expires string 4.string: Path of the cookie to set | string: cookie formatted string (which should be encoded by using encodeURIComponent()) | null | 当每次cookies改变时,会触发这个函数调用 |
fnDrawCallback | 无 | 无 | 无 | 在每次table被draw完后调用,至于做什么就看着办吧 |
fnFooterCallback | 1.node : "TR" element for the footer 2.array array strings : Full table data (as derived from the original HTML) 3.int : Index for the current display starting point in the display array< 4.int : Index for the current display ending point in the display array 5.array int : Index array to translate the visual position to the full data array | 用于在每次重画的时候修改表格的脚部 | ||
fnFormatNumber | 1.int : number to be formatted | String : formatted string for DataTables to show the number | 有默认的 | 用于在大数字上,自动加入一些逗号,分隔开 |
fnHeaderCallback | 1.node : "TR" element for the header 2.array array strings : Full table data (as derived from the original HTML) 3.int : Index for the current display starting point in the display array 4.int : Index for the current display ending point in the display array 5.array int : Index array to translate the visual position to the full data array | 用于在每次draw发生时,修改table的header | ||
fnInfoCallback | 1.object: DataTables settings object 2.int: Starting position in data for the draw 3.int: End position in data for the draw 4.int: Total number of rows in the table (regardless of filtering) 5.int: Total number of rows in the data set,after filtering 6.string: The string that DataTables has formatted using it's own rules | string: The string to be displayed in the information element. | 用于传达table信息 | |
fnInitComplete | 1.object:oSettings - DataTables settings object | 表格初始化完成后调用 | ||
fnPreDrawCallback | Boolean | 用于在开始绘制之前调用,返回false的话,会阻止draw事件发生;返回其它值,draw可以顺利执行 | ||
fnRowCallback | 1.node : "TR" element for the current row 2.array strings : Raw data array for this row (as derived from the original HTML) 3.int : The display index for the current table draw 4.int : The index of the data in the full list of rows (after filtering) | node : "TR" element for the current row | 当创建了行,但还未绘制到屏幕上的时候调用,通常用于改变行的class风格 | |
fnServerData | 1.string: HTTP source to obtain the data from (i.e. sAjaxSource) 2.array objects: A key/value pair object containing the data to send to the server 3.function: Function to be called on completion of the data get process that will draw the data on the page. | void | $.getJSON | 用于替换默认发到服务端的请求操作 |
fnStateLoadCallback | 1.object:oSettings - DataTables settings object 2.object:oData - Object containing information retrieved from the state saving cookie which should be restored. For the exact properties please refer to the DataTables code. | Boolean - false if the state should not be loaded,true otherwise | 在cookies中的数据被加载前执行,可以方便地修改这些数据 | |
fnStateSaveCallback | 1.object:oSettings - DataTables settings object 2.String:sValue - a JSON string (without the final closing brace) which should be stored in the state saving cookie. | String - the full string that should be used to save the state | 在状态数据被存储到cookies前执行,可以方便地做一些预操作 |
其中,涉及到服务器端分页的地方还需要实例来解释:
$("#" + tableId).dataTable({ "aLengthMenu": [10,15,20],//更改显示记录数选项 "bAutoWidth": true,//是否自适应宽度 "bFilter": false,"columns": [ { "data": "id","sDefaultContent": "",//此列默认值为"",以防数据中没有此值,DataTables加载数据的时候报错 "bVisible": false //此列不显示 },{ "data": "CallCount","sTitle": "访问次数","sClass": "left" },{ "data": "update","sTitle": "编辑","sClass": "left" } ],"oLanguage": { //国际化配置 "sProcessing": "正在获取数据,请稍后...","sLengthMenu": "显示 _MENU_ 条","sZeroRecords": "没有您要搜索的内容","sInfo": "从 _START_ 到 _END_ 条记录 总记录数为 _TOTAL_ 条","sInfoEmpty": "记录数为0","sInfoFiltered": "(全部记录数 _TOTAL_ 条)","sInfoPostFix": "","sSearch": "搜索","sUrl": "","oPaginate": { "sFirst": "第一页","sPrevIoUs": "上一页","sNext": "下一页","sLast": "最后一页" } },//fnInitComplete:当datatable初始化完成之后,我显示了我自己添加的日期的搜索,以及审核按钮,主要目的是用户体验优化 "fnInitComplete": function () { $('#time_select').css("display","inline-block"); $('#audit_pass').css("display","inline-block"); },"bProcessing": false,//是否显示加载 "sAjaxSource": '/admin/Developer/getDeveloperData',//请求资源路径 "serverSide": true,//开启服务器处理模式 "fnDrawCallback":function(){ //修改事件 $('.update-span').click(function () { var oTable = $('#'+tableId).dataTable(); var b = oTable.fnGetData($(this).parent().parent()); $('#son_form').css('display','block'); addFormData(b); }); },"fnServerParams": function (aoData) { aoData.push({ "name": "status","value": $('#audit').val() }); aoData.push({ "name": "beginTime","value": $('#start_date').val() }); aoData.push({ "name": "endTime","value": $('#end_date').val() }); },"fnServerData": function (sSource,aoData,fnCallback) { $.ajax({ 'type': 'post',"url": sSource,"dataType": "json","data": { 'aoData': JSON.stringify(aoData) },//"aodata": JSON.stringify(aoData) "success": function (resp) { var msgJson = new Object(); msgJson = packagingdatatabledata(resp); var msgString = JSON.stringify(msgJson); var a = eval('(' + msgString + ')'); fnCallback(a); } }); } });
$.ajax({ type: 'post',//可选get url: '/admin/Developer/checkData',data: { 'user_Id': JSON.stringify(a) },dataType: 'json',//服务器返回的数据类型 可选XML,Json jsonp script htmltext等 success: function (msg) { $('#' + tableId).dataTable().fnDraw(); },error: function () { } });
对datatable()进行输出以后,可以发现这些
- $("#" + tableId).dataTable():init[1]
- 0:table#tableId.jq-table.dataTable.no-footer.table.table-striped.table-bordered
- $:(a,b)
- _:(a,b)
- _fnAddColumn:()
- _fnAddData:()
- _fnAddOptionsHtml:()
- _fnAddTr:()
- _fnAdjustColumnSizing:()
- _fnAjaxDataSrc:()
- _fnAjaxParameters:()
- _fnAjaxUpdate:()
- _fnAjaxUpdateDraw:()
- _fnApplyColumnDefs:()
- _fnApplytochildren:()
- _fnBindAction:()
- _fnBrowserDetect:()
- _fnBuildAjax:()
- _fnBuildHead:()
- _fnCalculateColumnWidths:()
- _fnCalculateEnd:()
- _fnCallbackFire:()
- _fnCallbackReg:()
- _fnCamelToHungarian:()
- _fnClearTable:()
- _fnColumnIndexToVisible:()
- _fnColumnOptions:()
- _fnColumnTypes:()
- _fnConvertToWidth:()
- _fnCreateTr:()
- _fnDataSource:()
- _fnDeleteIndex:()
- _fnDetectHeader:()
- _fnDraw:()
- _fnDrawHead:()
- _fnEscapeRegex:()
- _fnExternApiFunc:()
- _fnFeatureHtmlFilter:()
- _fnFeatureHtmlInfo:()
- _fnFeatureHtmlLength:()
- _fnFeatureHtmlPaginate:()
- _fnFeatureHtmlProcessing:()
- _fnFeatureHtmlTable:()
- _fnFilter:()
- _fnFilterColumn:()
- _fnFilterComplete:()
- _fnFilterCreateSearch:()
- _fnFilterCustom:()
- _fnFilterData:()
- _fnGetCellData:()
- _fnGetColumns:()
- _fnGetDataMaster:()
- _fnGetMaxLenString:()
- _fnGetObjectDataFn:()
- _fnGetRowElements:()
- _fnGetUniqueThs:()
- _fnGetWidestNode:()
- _fnHungarianMap:()
- _fnInfoMacros:()
- _fnInitComplete:()
- _fnInitialise:()
- _fnInvalidate:()
- _fnLanguageCompat:()
- _fnLengthChange:()
- _fnLengthOverflow:()
- _fnLoadState:()
- _fnLog:()
- _fnMap:()
- _fnNodeToColumnIndex:()
- _fnNodeToDataIndex:()
- _fnPageChange:()
- _fnProcessingDisplay:()
- _fnReDraw:()
- _fnRenderer:()
- _fnRowAttributes:()
- _fnSaveState:()
- _fnScrollBarWidth:()
- _fnScrollDraw:()
- _fnScrollingWidthAdjust:()
- _fnSetCellData:()
- _fnSetObjectDataFn:()
- _fnSettingsFromNode:()
- _fnSort:()
- _fnSortAria:()
- _fnSortAttachListener:()
- _fnSortData:()
- _fnSortFlatten:()
- _fnSortListener:()
- _fnSortingClasses:()
- _fnSplitObjNotation:()
- _fnStringToCss:()
- _fnThrottle:()
- _fnUpdateInfo:()
- _fnVisbleColumns:()
- _fnVisibleToColumnIndex:()
- api:(a)
- context:document
- fnAddData:(a,b)
- fnAdjustColumnSizing:(a)
- fnClearTable:(a)
- fnClose:(a)
- fnDeleteRow:(a,b,c)
- fnDestroy:(a)
- fnDraw:(a)
- fnFilter:(a,c,e,d,h)
- fnGetData:(a,b)
- fnGetNodes:(a)
- fnGetPosition:(a)
- fnIsOpen:(a)
- fnOpen:(a,c)
- fnPageChange:(a,b)
- fnSetColumnVis:(a,c)
- fnSettings:()
- fnSort:(a)
- fnSortListener:(a,c)
- fnUpdate:(a,d)
- fnVersionCheck:(a)
- internal:Object
- length:1
- oApi:Object
- selector:"#tableId"
fnAddData
:
(a,b)
fnAdjustColumnSizing
:
(a)
fnClearTable
:
(a)
fnClose
:
(a)
fnDeleteRow
:
(a,c)
fnDestroy
:
(a)
fnDraw
:
(a)
fnFilter
:
(a,h)
fnGetData
:
(a,b)
fnGetNodes
:
(a)
fnGetPosition
:
(a)
fnIsOpen
:
(a)
fnOpen
:
(a,c)
fnPageChange
:
(a,b)
fnSetColumnVis
:
(a,c)
fnSettings
:
()
fnSort
:
(a)
fnSortListener
:
(a,c)
fnUpdate
:
(a,d)
fnVersionCheck
:
(a)
随便找一个试试,果然是的
再找一个验证一下
OK
原文链接:https://www.f2er.com/ajax/161412.html