datatable参数和服务端ajax函数配置及说明

前端之家收集整理的这篇文章主要介绍了datatable参数和服务端ajax函数配置及说明前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
上周因为需要使用了datatable,可是网上搜索到的要么就是一点点的参数介绍,要么就是几个回调函数的介绍,极少数有比较全面的,所以把自己用到的总结了一下,这其中涉及到服务端的分页,其实datatable都给我们集成好了,用起来是很方便的,话不多说,如下:
关于datatable使用详解:
1、基本参数配置:
@H_404_10@
要注意的是,要被dataTable处理的table对象,必须有thead与tbody,而且,结构要规整(数据不一定要完整),这样才能正确处理。以下是在进行dataTable绑定处理时候可以附加的参数:

@H_404_10@
属性名称 取值范围 解释
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' 又是水平滚动相关的,没搞懂啥意思



@H_404_10@
对于服务器来说,可以通过请求参数来获得当前的操作信息。[也就是说以下这个列表中的属性值都是可以在服务器端的方法获取到!]这些在下面的例子中aodata中都可以获取得到


@H_404_10@
类型 名称 说明
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 用来生成的信息


@H_404_10@
服务器返回的数据格式如下所示
类型 名称 说明
int iTotalRecords 实际的行数
iTotalDisplayRecords 过滤之后,实际的行数。
string sEcho 来自客户端 sEcho 的没有变化的复制品,
sColumns 可选,以逗号分隔的列名,
array array mixed aaData 数组的数组,表格中的实际数据。

@H_404_10@
回调函数名称 参数 返回值 默认 功能
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);
}
});
}
});


而在我自己的事件请求中,可以直接调用datatable的方法完成页面的重绘

$.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()进行输出以后,可以发现这些
  1. $("#" + tableId).dataTable():init[1]
    1. 0:table#tableId.jq-table.dataTable.no-footer.table.table-striped.table-bordered
    2. $:(a,b)
    3. _:(a,b)
    4. _fnAddColumn:()
    5. _fnAddData:()
    6. _fnAddOptionsHtml:()
    7. _fnAddTr:()
    8. _fnAdjustColumnSizing:()
    9. _fnAjaxDataSrc:()
    10. _fnAjaxParameters:()
    11. _fnAjaxUpdate:()
    12. _fnAjaxUpdateDraw:()
    13. _fnApplyColumnDefs:()
    14. _fnApplytochildren:()
    15. _fnBindAction:()
    16. _fnBrowserDetect:()
    17. _fnBuildAjax:()
    18. _fnBuildHead:()
    19. _fnCalculateColumnWidths:()
    20. _fnCalculateEnd:()
    21. _fnCallbackFire:()
    22. _fnCallbackReg:()
    23. _fnCamelToHungarian:()
    24. _fnClearTable:()
    25. _fnColumnIndexToVisible:()
    26. _fnColumnOptions:()
    27. _fnColumnTypes:()
    28. _fnConvertToWidth:()
    29. _fnCreateTr:()
    30. _fnDataSource:()
    31. _fnDeleteIndex:()
    32. _fnDetectHeader:()
    33. _fnDraw:()
    34. _fnDrawHead:()
    35. _fnEscapeRegex:()
    36. _fnExternApiFunc:()
    37. _fnFeatureHtmlFilter:()
    38. _fnFeatureHtmlInfo:()
    39. _fnFeatureHtmlLength:()
    40. _fnFeatureHtmlPaginate:()
    41. _fnFeatureHtmlProcessing:()
    42. _fnFeatureHtmlTable:()
    43. _fnFilter:()
    44. _fnFilterColumn:()
    45. _fnFilterComplete:()
    46. _fnFilterCreateSearch:()
    47. _fnFilterCustom:()
    48. _fnFilterData:()
    49. _fnGetCellData:()
    50. _fnGetColumns:()
    51. _fnGetDataMaster:()
    52. _fnGetMaxLenString:()
    53. _fnGetObjectDataFn:()
    54. _fnGetRowElements:()
    55. _fnGetUniqueThs:()
    56. _fnGetWidestNode:()
    57. _fnHungarianMap:()
    58. _fnInfoMacros:()
    59. _fnInitComplete:()
    60. _fnInitialise:()
    61. _fnInvalidate:()
    62. _fnLanguageCompat:()
    63. _fnLengthChange:()
    64. _fnLengthOverflow:()
    65. _fnLoadState:()
    66. _fnLog:()
    67. _fnMap:()
    68. _fnNodeToColumnIndex:()
    69. _fnNodeToDataIndex:()
    70. _fnPageChange:()
    71. _fnProcessingDisplay:()
    72. _fnReDraw:()
    73. _fnRenderer:()
    74. _fnRowAttributes:()
    75. _fnSaveState:()
    76. _fnScrollBarWidth:()
    77. _fnScrollDraw:()
    78. _fnScrollingWidthAdjust:()
    79. _fnSetCellData:()
    80. _fnSetObjectDataFn:()
    81. _fnSettingsFromNode:()
    82. _fnSort:()
    83. _fnSortAria:()
    84. _fnSortAttachListener:()
    85. _fnSortData:()
    86. _fnSortFlatten:()
    87. _fnSortListener:()
    88. _fnSortingClasses:()
    89. _fnSplitObjNotation:()
    90. _fnStringToCss:()
    91. _fnThrottle:()
    92. _fnUpdateInfo:()
    93. _fnVisbleColumns:()
    94. _fnVisibleToColumnIndex:()
    95. api:(a)
    96. context:document
    97. fnAddData:(a,b)
    98. fnAdjustColumnSizing:(a)
    99. fnClearTable:(a)
    100. fnClose:(a)
    101. fnDeleteRow:(a,b,c)
    102. fnDestroy:(a)
    103. fnDraw:(a)
    104. fnFilter:(a,c,e,d,h)
    105. fnGetData:(a,b)
    106. fnGetNodes:(a)
    107. fnGetPosition:(a)
    108. fnIsOpen:(a)
    109. fnOpen:(a,c)
    110. fnPageChange:(a,b)
    111. fnSetColumnVis:(a,c)
    112. fnSettings:()
    113. fnSort:(a)
    114. fnSortListener:(a,c)
    115. fnUpdate:(a,d)
    116. fnVersionCheck:(a)
    117. internal:Object
    118. length:1
    119. oApi:Object
    120. selector:"#tableId"

这样一看,大概就知道了datatable的一些外部调用函数

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

猜你在找的Ajax相关文章