jquery插件之DataTables
DataTables(http://www.datatables.net/)应该是我到目前为止见过的,功能最强大的表格解决方案(当然,不计算其它整套框架中的table控件在内)。
先把它主页上写的特性翻译罗列如下:
- 可变长度分页;
- 动态过滤;
- 多列排序,带数据类型检测功能;
- 列宽度的智能处理;
- 从多种数据源获取数据(DOM,jsArray,ajaxfile,server-sidereturning);
- 滚动配置属性;
- 完整国际化支持;
- jqueryUIThemeRoller支持;
- 经历了个2600多个单元测试,相当牢固;
- 有为数不少的插件支持;
- 免费的;
- 状态保存能力;
- 支持隐藏列;
- 动态创建表格的能力;
- 自动ajax数据加载;
- 自定义DOM位置;
- 单列过滤(这个与前面的过滤有区别么?);
- 多种分页器;
- 无损的DOM交互;
- 参与排序的列高亮;
- 高级数据源配置;
- 扩展的插件支持功能;
- 可以用css完全配置表象;
- 丰富的文档;
- 110多个例子;
- 对AdobeAIR的完全支持。
引入
使用
$(document).ready(function(){ $('#example').dataTable(); }); // 另一个例子 $(document).ready(function(){ $('#example').dataTable({ "bInfo": false }); });
要注意的是,要被dataTable处理的table对象,必须有thead与tbody,而且,结构要规整(数据不一定要完整),这样才能正确处理。
以下是在进行dataTable绑定处理时候可以附加的参数:
属性名称取值范围解释bAutoWidthtrueorfalse,defaulttrue是否自动计算表格各列宽度bDeferRendertrueorfalse,defaultfalse用于渲染的一个参数bFiltertrueorfalse,defaulttrue开关,是否启用客户端过滤功能bInfotrueorfalse,defaulttrue开关,是否显示表格的一些信息bJQueryUItrueorfalse,defaultfalse是否使用jqueryuithemeroller的风格bLengthChangetrueorfalse,defaulttrue开关,是否显示一个每页长度的选择条(需要分页器支持)bPaginatetrueorfalse,defaulttrue开关,是否显示(使用)分页器bProcessingtrueorfalse,defualtfalse开关,以指定当正在处理数据的时候,是否显示“正在处理”这个提示信息bScrollInfinitetrueorfalse,defaultfalse开关,以指定是否无限滚动(与sScrollY配合使用),在大数据量的时候很有用。当这个标志为true的时候,分页器就默认关闭bSorttrueorfalse,defaulttrue开关,是否让各列具有按列排序功能bSortClassestrueorfalse,defaulttrue开关,指定当当前列在排序时,是否增加classes'sorting_1','sorting_2'and'sorting_3',打开后,在处理大数据时,性能有所损失bStateSavetrueorfalse,defaultfalse开关,是否打开客户端状态记录功能。这个数据是记录在cookies中的,打开了这个记录后,即使刷新一次页面,或重新打开浏览器,之前的状态都是保存下来的sScrollX'disabled'or'100%'类似的字符串是否开启水平滚动,以及指定滚动区域大小sScrollY'disabled'or'200px'类似的字符串是否开启垂直滚动,以及指定滚动区域大小------选项aaSortingarrayarray[int,string],如[],[[0,'asc'],[0,'desc']]指定按多列数据排序的依据aaSortingFixed同上同上。唯一不同点是不能被用户的自定义配置冲突aLengthMenudefault[10,25,50,100],可以为一维数组,也可为二维数组,比如:[[10,25,50,-1],[10,25,50,"All"]]这个为选择每页的条目数,当使用一个二维数组时,二维层面只能有两个元素,第一个为显示每页条目数的选项,第二个是关于这些选项的解释aoSearchColsdefaultnull,类似:[null,{"sSearch":"Myfilter"},null,{"sSearch":"^[0-9]","bEscapeRegex":false}]给每个列单独定义其初始化搜索列表特性(这一块还没搞懂)asStripClassesdefault['odd','even'],比如['strip1','strip2','strip3']指定要被应用到各行的class风格,会自动循环bDestroytrueorfalse,defaultfalse用于当要在同一个元素上执行新的dataTable绑定时,将之前的那个数据对象清除掉,换以新的对象设置bRetrievetrueorfalse,defaultfalse用于指明当执行dataTable绑定时,是否返回DataTable对象bScrollCollapsetrueorfalse,defaultfalse指定适当的时候缩起滚动视图bSortCellsToptrueorfalse,defaultfalse(未知的东东)iCookieDuration整数,默认7200,单位为秒指定用于存储客户端信息到cookie中的时间长度,超过这个时间后,自动过期iDeferLoading整数,默认为null延迟加载,它的参数为要加载条目的数目,通常与bServerSide,sAjaxSource等配合使用iDisplayLength整数,默认为10用于指定一屏显示的条数,需开启分页器iDisplayStart整数,默认为0用于指定从哪一条数据开始显示到表格中去iScrollLoadGap整数,默认为100用于指定当DataTable设置为滚动时,最多可以一屏显示多少条数据oSearch默认{"sSearch":"","bRegex":false,"bSmart":true}又是初始时指定搜索参数相关的,有点复杂,没搞懂目前sAjaxDataProp字符串,default'aaData'指定当从服务端获取表格数据时,数据项使用的名字sAjaxSourceURL字符串,defaultnull指定要从哪个URL获取数据sCookiePrefix字符串,default'SpryMedia_DataTables_'当打开状态存储特性后,用于指定存储在cookies中的字符串的前缀名字sDomdefaultlfrtip(whenbJQueryUIisfalse)or<"H"lfr>t<"F"ip>(whenbJQueryUIistrue)这是用于定义DataTable布局的一个强大的属性,另开专门文档来补充说明吧sPaginationType'full_numbers'or'two_button',default'two_button'用于指定分页器风格sScrollXInnerstringdefault'disabled'又是水平滚动相关的,没搞懂啥意思
DataTable支持如下回调函数
回调函数名称参数返回值默认功能fnCookieCallback1.string:NameofthecookiedefinedbyDataTables2.object:Datatobestoredinthecookie3.string:Cookieexpiresstring4.string:Pathofthecookietosetstring:cookieformattedstring(whichshouldbeencodedbyusingencodeURIComponent())null当每次cookies改变时,会触发这个函数调用fnDrawCallback无无无在每次table被draw完后调用,至于做什么就看着办吧fnFooterCallback1.node:"TR"elementforthefooter2.arrayarraystrings:Fulltabledata(asderivedfromtheoriginalHTML)3.int:Indexforthecurrentdisplaystartingpointinthedisplayarray<4.int:Indexforthecurrentdisplayendingpointinthedisplayarray5.arrayint:Indexarraytotranslatethevisualpositiontothefulldataarray无无用于在每次重画的时候修改表格的脚部fnFormatNumber1.int:numbertobeformattedString:formattedstringforDataTablestoshowthenumber有默认的用于在大数字上,自动加入一些逗号,分隔开fnHeaderCallback1.node:"TR"elementfortheheader2.arrayarraystrings:Fulltabledata(asderivedfromtheoriginalHTML)3.int:Indexforthecurrentdisplaystartingpointinthedisplayarray4.int:Indexforthecurrentdisplayendingpointinthedisplayarray5.arrayint:Indexarraytotranslatethevisualpositiontothefulldataarray无无用于在每次draw发生时,修改table的headerfnInfoCallback1.object:DataTablessettingsobject2.int:Startingpositionindataforthedraw3.int:Endpositionindataforthedraw4.int:Totalnumberofrowsinthetable(regardlessoffiltering)5.int:Totalnumberofrowsinthedataset,afterfiltering6.string:ThestringthatDataTableshasformattedusingit'sownrulesstring:Thestringtobedisplayedintheinformationelement.无用于传达table信息fnInitComplete1.object:oSettings-DataTablessettingsobject无无表格初始化完成后调用fnPreDrawCallback1.object:oSettings-DataTablessettingsobjectBoolean无用于在开始绘制之前调用,返回false的话,会阻止draw事件发生;返回其它值,draw可以顺利执行fnRowCallback1.node:"TR"elementforthecurrentrow2.arraystrings:Rawdataarrayforthisrow(asderivedfromtheoriginalHTML)3.int:Thedisplayindexforthecurrenttabledraw4.int:Theindexofthedatainthefulllistofrows(afterfiltering)node:"TR"elementforthecurrentrow无当创建了行,但还未绘制到屏幕上的时候调用,通常用于改变行的class风格fnServerData1.string:HTTPsourcetoobtainthedatafrom(i.e.sAjaxSource)2.arrayobjects:Akey/valuepairobjectcontainingthedatatosendtotheserver3.function:Functiontobecalledoncompletionofthedatagetprocessthatwilldrawthedataonthepage.void$.getJSON用于替换默认发到服务端的请求操作fnStateLoadCallback1.object:oSettings-DataTablessettingsobject2.object:oData-Objectcontaininginformationretrievedfromthestatesavingcookiewhichshouldberestored.FortheexactpropertiespleaserefertotheDataTablescode.Boolean-falseifthestateshouldnotbeloaded,trueotherwise无在cookies中的数据被加载前执行,可以方便地修改这些数据fnStateSaveCallback1.object:oSettings-DataTablessettingsobject2.String:sValue-aJSONstring(withoutthefinalclosingbrace)whichshouldbestoredinthestatesavingcookie.String-thefullstringthatshouldbeusedtosavethestate无在状态数据被存储到cookies前执行,可以方便地做一些预操作
*dataTable中的命名全是匈牙利法,真不习惯啊,恼火~~