├── doc ├── images │ ├── pagetheme_full.png │ └── pagetheme_simple.png └── readme-zh_CN.md ├── demo └── JSP │ └── EasyDataTable_source.zip ├── .gitattributes ├── .github └── FUNDING.yml ├── easydatatable ├── lang │ ├── easy.datatable-lang-en.js │ └── easy.datatable-lang-zh_CN.js ├── css │ ├── datatable_ext.css │ ├── datatable.css │ └── datatable_win8.css ├── 1.X │ ├── easy.datatable-1.11.0.min.js │ └── easy.datatable-1.11.0.js ├── easy.datatable-2.4.0.min.js └── easy.datatable-2.4.0.js ├── DataTable.jquery.json ├── readme.md └── .gitignore /doc/images/pagetheme_full.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushelp/DataTable/HEAD/doc/images/pagetheme_full.png -------------------------------------------------------------------------------- /demo/JSP/EasyDataTable_source.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushelp/DataTable/HEAD/demo/JSP/EasyDataTable_source.zip -------------------------------------------------------------------------------- /doc/images/pagetheme_simple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushelp/DataTable/HEAD/doc/images/pagetheme_simple.png -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | 4 | # Custom for Visual Studio 5 | *.cs diff=csharp 6 | *.sln merge=union 7 | *.csproj merge=union 8 | *.vbproj merge=union 9 | *.fsproj merge=union 10 | *.dbproj merge=union 11 | 12 | # Standard to msysgit 13 | *.doc diff=astextplain 14 | *.DOC diff=astextplain 15 | *.docx diff=astextplain 16 | *.DOCX diff=astextplain 17 | *.dot diff=astextplain 18 | *.DOT diff=astextplain 19 | *.pdf diff=astextplain 20 | *.PDF diff=astextplain 21 | *.rtf diff=astextplain 22 | *.RTF diff=astextplain 23 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] 4 | patreon: # Replace with a single Patreon username 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: # Replace with a single Ko-fi username 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: # Replace with a single Liberapay username 10 | issuehunt: # Replace with a single IssueHunt username 11 | otechie: # Replace with a single Otechie username 12 | custom: ['http://www.easyproject.cn/donation'] 13 | -------------------------------------------------------------------------------- /easydatatable/lang/easy.datatable-lang-en.js: -------------------------------------------------------------------------------- 1 | /** 2 | * jQuery EasyDataTable Plugin 3 | * 4 | * Version 2.3.0 5 | * 6 | * http://easyproject.cn 7 | * https://github.com/ushelp/EasyDataTable 8 | * 9 | * Copyright 2014 Ray [ inthinkcolor@gmail.com ] 10 | * 11 | * Dependencies: EasyDataTable 12 | * 13 | */ 14 | $(function(){ 15 | if (DataTable) { 16 | /* 17 | * I18N Resources 18 | * */ 19 | DataTable.loading_msg = "Data is loading ......"; 20 | DataTable.default_lang = { 21 | first : "first", 22 | previous : "previous", 23 | next : "next", 24 | last : "last", 25 | totalCount : "total {0} rows", 26 | totalPage : "total {0} pages", 27 | rowPerPage : "page for {0} rows" 28 | }; 29 | /* 30 | * Auto init DataTable 31 | * 32 | * When you need to manually call can annotate the init code 33 | * 34 | * */ 35 | DataTable.init(); 36 | } 37 | }); -------------------------------------------------------------------------------- /easydatatable/lang/easy.datatable-lang-zh_CN.js: -------------------------------------------------------------------------------- 1 | /** 2 | * jQuery EasyDataTable Plugin 3 | * 4 | * Version 2.3.0 5 | * 6 | * http://easyproject.cn 7 | * https://github.com/ushelp/EasyDataTable 8 | * 9 | * Copyright 2014 Ray [ inthinkcolor@gmail.com ] 10 | * 11 | * Dependencies: EasyDataTable 12 | * 13 | */ 14 | $(function(){ 15 | if (DataTable) { 16 | /* 17 | * I18N Resources 18 | * */ 19 | DataTable.loading_msg="数据正在加载中.......", 20 | DataTable.default_lang={ 21 | first:"首页", 22 | previous:"上一页", 23 | next:"下一页", 24 | last:"末页", 25 | totalCount:"共{0}条", 26 | totalPage:"共{0}页", 27 | rowPerPage:"每页显示{0}条" 28 | }; 29 | /* 30 | * Auto init DataTable 31 | * 32 | * When you need to manually call can annotate the init code 33 | * 34 | * */ 35 | DataTable.init(); 36 | 37 | } 38 | }); -------------------------------------------------------------------------------- /DataTable.jquery.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "DataTable", 3 | "title": "DataTable AJAX Pagination jQuery plugin", 4 | "description": "The best jQuery AJAX Pagination plugin——DataTable jQuery plugin!", 5 | "keywords": [ 6 | "Ajax", 7 | "table", 8 | "data", 9 | "datatable", 10 | "EasyDataTable", 11 | "EDataTable","jquery","ui","Pagination","page","easy" 12 | ], 13 | "version": "2.4.0", 14 | "author": { 15 | "name": "Ray", 16 | "email": "inthinkcolor@gmail.com", 17 | "url": "http://www.easyproject.cn" 18 | }, 19 | "maintainers": [ 20 | { 21 | "name": "Ray", 22 | "email": "inthinkcolor@gmail.com", 23 | "url": "http://www.easyproject.cn" 24 | } 25 | ], 26 | "licenses": [ 27 | { 28 | "type": "MIT", 29 | "url": "https://github.com/srchulo/jQuery-Facets/blob/master/LICENSE" 30 | } 31 | ], 32 | "demo":"http://www.easyproject.cn/easydatatable/en/index.jsp#demo", 33 | "bugs": "https://github.com/ushelp/DataTable/issues", 34 | "homepage": "http://www.easyproject.cn/easydatatable/en/index.jsp", 35 | "docs": "http://www.easyproject.cn/easydatatable/en/index.jsp#readme", 36 | "download": "https://github.com/ushelp/DataTable/archive/master.zip", 37 | "dependencies": { 38 | "jquery": ">=1.5" 39 | } 40 | } -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # EasyDataTable 2 | 3 | --------------- 4 | 5 | EasyDataTable又名DataTable,是基于jQuery的纯Ajax分页插件,支持HTML增强和JS编程两种途径实现分页,最大的特点是:简单、易用、灵活。支持多种数据源加载(服务器动态数据源,静态数据源,JSON文件数据源);自带分页标签;支持自定义分页;自定义Loading提示;数据表格UI可自定义;支持列点击排序,支持静态数据排序;支持条件动态查询,静态数据条件筛选查询,支持范围、方式及模式支持,内置8种静态数据查询匹配模式;内置EasyDataTable表达式语言、事件支持,能够通过JavaScript编程增强分页。 6 | 7 | - [中文说明文档](doc/readme-zh_CN.md) 8 | 9 | 10 | EasyDataTable aka DataTable, is based on pure Ajax jQuery pagination plugin supports HTML and JS programming enhancements are two ways to implement paging, the biggest feature is: simple, easy to use and flexible. Supports a variety of data sources to load (dynamic data source server, static data source, JSON file data sources); comes with pagination tag; supports custom paging; custom Loading prompt; spreadsheet UI can be customized; support columns click ordering, support static data sorting; support dynamic query conditions, static data filter query conditions, support scope, methods and models to support, built-in 8 kinds of static data query pattern matching; built EasyDataTable expression language, event support, can enhance the page through JavaScript programming. 11 | 12 | - [English readme](doc/readme-en.md) 13 | 14 | 15 | ### [官方主页](http://www.easyproject.cn/easydatatable/zh-cn/index.jsp '官方主页') 16 | 17 | [留言评论](http://www.easyproject.cn/easydatatable/zh-cn/index.jsp#donation '留言评论') 18 | 19 | 如果您有更好意见,建议或想法,请联系我。 20 | 21 | 22 | ### [The official home page](http://www.easyproject.cn/easydatatable/en/index.jsp 'The official home page') 23 | 24 | [Comments](http://www.easyproject.cn/easydatatable/en/index.jsp#donation 'Comments') 25 | 26 | If you have more comments, suggestions or ideas, please contact me. 27 | 28 | ## End 29 | 30 | Email: 31 | 32 | [http://www.easyproject.cn](http://www.easyproject.cn "EasyProject Home") 33 | 34 | 35 | **Donation/捐助:** 36 | 37 | 38 | 
39 | 支付宝/微信/QQ/云闪付/PayPal 扫码支付 40 |
支付宝/微信/QQ/云闪付/PayPal
41 | 42 |
43 | 44 | 我们相信,每个人的点滴贡献,都将是推动产生更多、更好免费开源产品的一大步。 45 | 46 | **感谢慷慨捐助,以支持服务器运行和鼓励更多社区成员。** 47 | 48 | We believe that the contribution of each bit by bit, will be driven to produce more and better free and open source products a big step. 49 | 50 | **Thank you donation to support the server running and encourage more community members.** 51 | -------------------------------------------------------------------------------- /easydatatable/css/datatable_ext.css: -------------------------------------------------------------------------------- 1 | 2 | .datatable { 3 | border-spacing: 0; 4 | background: #fff; 5 | padding: 0; 6 | margin: 0; 7 | font-size: 13px; 8 | line-height: 100%; 9 | font-family: 微软雅黑,Arial, sans-serif; 10 | border-collapse:collapse; border:solid 1px #ededed; 11 | overflow: scroll; 12 | } 13 | 14 | .datatable th { 15 | color: #444; 16 | padding: 1px 2px; 17 | border-right: solid 1px #D0D0D0; 18 | border-bottom: solid 1px #D0D0D0; 19 | text-align: center; 20 | background-image: url("../../images/grid3-hrow.gif"); 21 | } 22 | .datatable th:hover { 23 | color: #444; 24 | padding: 1px 2px; 25 | border-right: solid 1px #D0D0D0; 26 | border-bottom: solid 1px #D0D0D0; 27 | text-align: center; 28 | background-image: url("../../images/grid3-hrow-over.gif"); 29 | } 30 | 31 | .datatable tr { 32 | border-bottom:solid 1px #ededed; 33 | } 34 | .datatable td { 35 | padding: 1px 2px; 36 | border-right: solid 1px #ededed; 37 | 38 | } 39 | 40 | .datatable a {color:#3C7FB1; font-size:13px; line-height:20px;} 41 | .datatable a:hover {text-decoration:underline; line-height:20px;} 42 | 43 | .datatable tr.evenColor{} 44 | .datatable tr.trHover{background-color:#EFEFEF; } 45 | .datatable tr.trClick{background-color:#D9E8FB; } 46 | 47 | .dataTableScrollDiv{border: 1px solid #99BBE8;} 48 | 49 | 50 | .panelBar {border-color:#99BBE8; background-image: url("../../images/bg.gif");font-size:13px; display:block; overflow:hidden; height:25px; border-style:solid;border-width:1px 1px;border-top:0px; background-repeat:repeat-x; } 51 | .panelBar .pages { float:left; overflow:hidden; height:21px; padding:2px 5px;margin: 0px;} 52 | .panelBar .pages span { float:left; line-height:21px;} 53 | .panelBar .pages label { line-height:21px; padding-left:3px;padding-right: 3px; } 54 | .panelBar .pages select { float:left; margin:0 3px; font-size: 13px;font-family:Arial, sans-serif;} 55 | .panelBar .customPaging{display: none;} 56 | 57 | .pageGoHover{background-color:#FAFBFC; } 58 | .totalPage{margin-right: 10px;} 59 | .totalCount{font-size: 15px;font-family:Arial, sans-serif;} 60 | .pagego{ padding:0 5px 0 5px; cursor: pointer;} 61 | .pagegoto{ cursor: pointer;font-weight: bold;} 62 | .maxPage{font-family:Arial, sans-serif;font-weight: bold;font-size: 15px;} 63 | .gototxt{width: 30px;height: 23px;border:1px solid #D0D0D0; font-size: 14px;font-weight: bold;font-family:Arial, sans-serif;} 64 | .firstlastgo{color:#878787;} 65 | .nowpagenum{font-weight: bold;color: red;} 66 | .DataTable_Loading{font-weight: normal;color:#878787; margin: 10px auto;padding: 10px auto;text-align: center;} 67 | .sortArrow{font-size:11px;color:#444;padding-left: 3px;font-weight: bold;} 68 | .sortArrowHover{font-size:11px;color:#222;padding-left: 3px;font-weight: bold;} 69 | .sortArrowDown{font-size:11px;color:#000;padding-left: 3px;font-weight: bold;} 70 | .mycombox{color:#183152; border:6px #183152; font-size: 18px} 71 | -------------------------------------------------------------------------------- /easydatatable/css/datatable.css: -------------------------------------------------------------------------------- 1 | 2 | .datatable { 3 | border-spacing: 0; 4 | background: #fff; 5 | padding: 0; 6 | margin: 0; 7 | font-size: 13px; 8 | line-height: 100%; 9 | font-family: 微软雅黑,Arial, sans-serif; 10 | border-collapse:collapse; border:solid 1px #ededed; 11 | overflow: scroll; 12 | } 13 | 14 | .datatable th { 15 | font-weight: bold; 16 | color: #ff6600; 17 | border-color: #d0d0d0; 18 | background: #F0EFF0; 19 | padding: 1px 2px; 20 | line-height: 21px; 21 | border-right: solid 1px #D0D0D0; 22 | border-bottom: solid 1px #D0D0D0; 23 | text-align: center; 24 | } 25 | .datatable th:hover { 26 | font-weight: bold; 27 | color: #ff6600; 28 | border-color: #d0d0d0; 29 | background: #DAE2FF; 30 | padding: 1px 2px; 31 | line-height: 21px; 32 | border-right: solid 1px #D0D0D0; 33 | border-bottom: solid 1px #D0D0D0; 34 | text-align: center; 35 | } 36 | 37 | .datatable tr { 38 | border-bottom:solid 1px #ededed; 39 | background:#fff; 40 | } 41 | .datatable td { 42 | padding: 1px 2px; 43 | line-height: 21px; 44 | border-right: solid 1px #ededed; 45 | } 46 | 47 | .datatable a {color:#3C7FB1; font-size:13px; line-height:20px;} 48 | .datatable a:hover {text-decoration:underline; line-height:20px;} 49 | 50 | .datatable tr.evenColor{background-color: #F8F8F8;} 51 | .datatable tr.trHover{background-color:#E4F5FF; } 52 | .datatable tr.trClick{background-color:#7CC5E5; } 53 | 54 | .dataTableScrollDiv{border: 1px solid #D0D0D0;} 55 | 56 | .panelBar {border-color:#D0D0D0; background-color:#efefef;font-size:13px; display:block; overflow:hidden; height:25px; border-style:solid;border-width:1px 1px;border-top:0px; background-repeat:repeat-x; } 57 | .panelBar .pages { float:left; overflow:hidden; height:21px; padding:2px 5px;margin: 0px;} 58 | .panelBar .pages span { float:left; line-height:21px;} 59 | .panelBar .pages label { line-height:21px; padding-left:3px;padding-right: 3px; } 60 | .panelBar .pages select { float:left; margin:0 3px; font-size: 13px;font-family:Arial, sans-serif;} 61 | .panelBar .customPaging{display: none;} 62 | 63 | 64 | .pageGoHover{background-color:#FAFBFC; } 65 | .totalPage{margin-right: 10px;} 66 | .totalCount{font-size: 15px;font-family:Arial, sans-serif;} 67 | .pagego{ padding:0 5px 0 5px; cursor: pointer;} 68 | .pagegoto{ cursor: pointer;font-weight: bold;} 69 | .maxPage{font-family:Arial, sans-serif;font-weight: bold;font-size: 15px;} 70 | .gototxt{width: 30px;height: 23px;border:1px solid #D0D0D0; font-size: 14px;font-weight: bold;font-family:Arial, sans-serif;} 71 | .firstlastgo{color:#878787;} 72 | .nowpagenum{font-weight: bold;color: red;} 73 | .DataTable_Loading{font-weight: normal;color:#878787; margin: 10px auto;padding: 10px auto;text-align: center;} 74 | .sortArrow{font-size:11px;color:#ff6600;padding-left: 3px;font-weight: bold;} 75 | .sortArrowHover{font-size:11px;color:#4EBEE4;padding-left: 3px;font-weight: bold;} 76 | .sortArrowDown{font-size:11px;color:#191919;padding-left: 3px;font-weight: bold;} 77 | .mycombox{color:#183152; border:6px #183152; font-size: 18px} 78 | -------------------------------------------------------------------------------- /easydatatable/css/datatable_win8.css: -------------------------------------------------------------------------------- 1 | 2 | .datatable { 3 | border-spacing: 0; 4 | background: #fff; 5 | padding: 0; 6 | margin: 0; 7 | font-size: 13px; 8 | line-height: 100%; 9 | font-family: 微软雅黑,Arial, sans-serif; 10 | border-collapse:collapse; border:solid 1px #ededed; 11 | overflow: scroll; 12 | background: #fff; 13 | color: #000; 14 | } 15 | 16 | .datatable th { 17 | font-weight: bold; 18 | background: #000; 19 | color: #fff; 20 | border-color: #d0d0d0; 21 | padding: 1px 2px; 22 | line-height: 30px; 23 | height: 30px; 24 | border-right: solid 1px #D0D0D0; 25 | border-bottom: solid 1px #D0D0D0; 26 | text-align: center; 27 | font-size: 16px; 28 | } 29 | .datatable th:hover { 30 | font-weight: bold; 31 | background: #D4D4D4; 32 | color: #515361; 33 | border-color: #d0d0d0; 34 | padding: 1px 2px; 35 | line-height: 30px; 36 | height: 30px; 37 | border-right: solid 1px #D0D0D0; 38 | border-bottom: solid 1px #D0D0D0; 39 | text-align: center; 40 | font-size: 16px; 41 | } 42 | 43 | .datatable tr { 44 | border-bottom:solid 1px #ededed; 45 | } 46 | .datatable td { 47 | padding: 1px 2px; 48 | line-height: 21px; 49 | border-right: solid 1px #ededed; 50 | 51 | } 52 | 53 | .datatable a {color:#3C7FB1; font-size:13px; line-height:20px;} 54 | .datatable a:hover {text-decoration:underline; line-height:20px;} 55 | 56 | .datatable tr.evenColor{ background: #fff; 57 | color: #000;} 58 | .datatable tr.trHover{background-color:#FDCF17;color: #fff; } 59 | .datatable tr.trHover A{background-color:#FDCF17;color: #fff; } 60 | .datatable tr.trClick{background-color:#E3A21A; } 61 | .datatable tr.trClick A{background-color:#E3A21A;color: #fff; } 62 | 63 | .dataTableScrollDiv{border: 1px solid #ededed;} 64 | 65 | .panelBar {color:#4D96D5; background-color:#fff; border-color:#efefef; font-size:13px; display:block; overflow:hidden; height:25px; border-style:solid;border-width:1px 1px;border-top:0px; background-repeat:repeat-x; } 66 | .panelBar .pages { float:left; overflow:hidden; height:21px; padding:2px 5px;margin: 0px;} 67 | .panelBar .pages span { float:left; line-height:21px;} 68 | .panelBar .pages label { line-height:21px; padding-left:3px;padding-right: 3px; } 69 | .panelBar .pages select { float:left; margin:0 3px; font-size: 13px;font-family:Arial, sans-serif;} 70 | .panelBar .customPaging{display: none;} 71 | 72 | .pageGoHover{background-color:#FAFBFC;color:#FD9511 } 73 | .totalPage{margin-right: 10px;} 74 | .totalCount{font-size: 15px;font-family:Arial, sans-serif;} 75 | .pagego{ padding:0 5px 0 5px; cursor: pointer;} 76 | .pagegoto{ cursor: pointer;font-weight: bold;} 77 | .maxPage{font-family:Arial, sans-serif;font-weight: bold;font-size: 15px;} 78 | .gototxt{width: 30px;height: 23px;border:1px solid #D0D0D0; font-size: 14px;font-weight: bold;font-family:Arial, sans-serif;} 79 | .firstlastgo{color:#878787;} 80 | .nowpagenum{font-weight: bold;color: red;} 81 | .DataTable_Loading{font-weight: normal;color:#878787; margin: 10px auto;padding: 10px auto;text-align: center;} 82 | .sortArrow{font-size:11px;color:#fff;padding-left: 3px;font-weight: bold;} 83 | .sortArrowHover{font-size:11px;color:#444;padding-left: 3px;font-weight: bold;} 84 | .sortArrowDown{font-size:11px;color:#222;padding-left: 3px;font-weight: bold;} 85 | .mycombox{color:#183152; border:6px #183152; font-size: 18px} 86 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ################# 2 | ## Eclipse 3 | ################# 4 | 5 | *.pydevproject 6 | .project 7 | .metadata 8 | bin/ 9 | tmp/ 10 | *.tmp 11 | *.bak 12 | *.swp 13 | *~.nib 14 | local.properties 15 | .classpath 16 | .settings/ 17 | .loadpath 18 | 19 | # External tool builders 20 | .externalToolBuilders/ 21 | 22 | # Locally stored "Eclipse launch configurations" 23 | *.launch 24 | 25 | # CDT-specific 26 | .cproject 27 | 28 | # PDT-specific 29 | .buildpath 30 | 31 | 32 | ################# 33 | ## Visual Studio 34 | ################# 35 | 36 | ## Ignore Visual Studio temporary files, build results, and 37 | ## files generated by popular Visual Studio add-ons. 38 | 39 | # User-specific files 40 | *.suo 41 | *.user 42 | *.sln.docstates 43 | 44 | # Build results 45 | 46 | [Dd]ebug/ 47 | [Rr]elease/ 48 | x64/ 49 | build/ 50 | [Bb]in/ 51 | [Oo]bj/ 52 | 53 | # MSTest test Results 54 | [Tt]est[Rr]esult*/ 55 | [Bb]uild[Ll]og.* 56 | 57 | *_i.c 58 | *_p.c 59 | *.ilk 60 | *.meta 61 | *.obj 62 | *.pch 63 | *.pdb 64 | *.pgc 65 | *.pgd 66 | *.rsp 67 | *.sbr 68 | *.tlb 69 | *.tli 70 | *.tlh 71 | *.tmp 72 | *.tmp_proj 73 | *.log 74 | *.vspscc 75 | *.vssscc 76 | .builds 77 | *.pidb 78 | *.log 79 | *.scc 80 | 81 | # Visual C++ cache files 82 | ipch/ 83 | *.aps 84 | *.ncb 85 | *.opensdf 86 | *.sdf 87 | *.cachefile 88 | 89 | # Visual Studio profiler 90 | *.psess 91 | *.vsp 92 | *.vspx 93 | 94 | # Guidance Automation Toolkit 95 | *.gpState 96 | 97 | # ReSharper is a .NET coding add-in 98 | _ReSharper*/ 99 | *.[Rr]e[Ss]harper 100 | 101 | # TeamCity is a build add-in 102 | _TeamCity* 103 | 104 | # DotCover is a Code Coverage Tool 105 | *.dotCover 106 | 107 | # NCrunch 108 | *.ncrunch* 109 | .*crunch*.local.xml 110 | 111 | # Installshield output folder 112 | [Ee]xpress/ 113 | 114 | # DocProject is a documentation generator add-in 115 | DocProject/buildhelp/ 116 | DocProject/Help/*.HxT 117 | DocProject/Help/*.HxC 118 | DocProject/Help/*.hhc 119 | DocProject/Help/*.hhk 120 | DocProject/Help/*.hhp 121 | DocProject/Help/Html2 122 | DocProject/Help/html 123 | 124 | # Click-Once directory 125 | publish/ 126 | 127 | # Publish Web Output 128 | *.Publish.xml 129 | *.pubxml 130 | 131 | # NuGet Packages Directory 132 | ## TODO: If you have NuGet Package Restore enabled, uncomment the next line 133 | #packages/ 134 | 135 | # Windows Azure Build Output 136 | csx 137 | *.build.csdef 138 | 139 | # Windows Store app package directory 140 | AppPackages/ 141 | 142 | # Others 143 | sql/ 144 | *.Cache 145 | ClientBin/ 146 | [Ss]tyle[Cc]op.* 147 | ~$* 148 | *~ 149 | *.dbmdl 150 | *.[Pp]ublish.xml 151 | *.pfx 152 | *.publishsettings 153 | 154 | # RIA/Silverlight projects 155 | Generated_Code/ 156 | 157 | # Backup & report files from converting an old project file to a newer 158 | # Visual Studio version. Backup files are not needed, because we have git ;-) 159 | _UpgradeReport_Files/ 160 | Backup*/ 161 | UpgradeLog*.XML 162 | UpgradeLog*.htm 163 | 164 | # SQL Server files 165 | App_Data/*.mdf 166 | App_Data/*.ldf 167 | 168 | ############# 169 | ## Windows detritus 170 | ############# 171 | 172 | # Windows image file caches 173 | Thumbs.db 174 | ehthumbs.db 175 | 176 | # Folder config file 177 | Desktop.ini 178 | 179 | # Recycle Bin used on file shares 180 | $RECYCLE.BIN/ 181 | 182 | # Mac crap 183 | .DS_Store 184 | 185 | 186 | ############# 187 | ## Python 188 | ############# 189 | 190 | *.py[co] 191 | 192 | # Packages 193 | *.egg 194 | *.egg-info 195 | dist/ 196 | build/ 197 | eggs/ 198 | parts/ 199 | var/ 200 | sdist/ 201 | develop-eggs/ 202 | .installed.cfg 203 | 204 | # Installer logs 205 | pip-log.txt 206 | 207 | # Unit test / coverage reports 208 | .coverage 209 | .tox 210 | 211 | #Translations 212 | *.mo 213 | 214 | #Mr Developer 215 | .mr.developer.cfg 216 | -------------------------------------------------------------------------------- /easydatatable/1.X/easy.datatable-1.11.0.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * jQuery EasyDataTable Plugin 3 | * 4 | * Version 1.11.0 5 | * 6 | * http://easyproject.cn 7 | * https://github.com/ushelp/EasyDataTable 8 | * 9 | * Copyright 2014 Ray [ inthinkcolor@gmail.com ] 10 | * 11 | * Dependencies: jQuery 12 | * 13 | */ 14 | !function(window){var cacheData={},cacheDataRow={},cacheThLength={},cachePageTheme={},cacheLanguage={},cacheOrderArrow={},cacheInitLoading={},cacheStartFun={},cacheEndFun={},cacheUserPage={},cacheInit={},cacheDefaultRow={},order_default="↑↓",order_up="↑",order_down="↓",orderCache={},rowEvents={},rowEventsDT={},cacheLoadDefault={},cacheSizeArray={},innerLoad=function(tableid,easydataParams,jsonData){var dataForm,pagenoEle,rowperpageEle,defRow,initPage,usetheme,dataRow,table_loading_attr,nowDataTable=$("[id='"+tableid+"']");if(0!=nowDataTable.length){if(easydataParams=void 0==easydataParams?{}:easydataParams,dataForm=$("form").has(nowDataTable),pagenoEle=dataForm.find("[name='pageNo']"),rowperpageEle=dataForm.find("[name='rowPerPage']"),Validate.integer.test(pagenoEle.val())||pagenoEle.val(1),Validate.integer.test(rowperpageEle.val())||rowperpageEle.val(this.default_row),cacheInit[tableid]?dataForm.find(".panelBar [id='datatable_pagenum']").html(pageNumSpan(tableid,pagenoEle.val(),cacheData[tableid]["totalCount"])):(cacheInit[tableid]=!1,easydataParams.start&&(cacheStartFun[tableid]=easydataParams.start),easydataParams.end&&(cacheEndFun[tableid]=easydataParams.end),defRow=DataTable.default_row,Validate.integer.test(easydataParams.row)?defRow=easydataParams.row:(defRow=dataForm.find(".panelBar").attr("row"),Validate.integer.test(defRow)||(defRow=DataTable.default_row)),cacheDefaultRow[tableid]=defRow+"",initPage="",dataForm.append(initPage)),cacheStartFun[tableid])try{cacheStartFun[tableid](nowDataTable[0],!cacheInit[tableid])}catch(e){}void 0!=easydataParams.pagetheme&&(cachePageTheme[tableid]=easydataParams.pagetheme),cachePageTheme[tableid]||(usetheme=dataForm.find(".panelBar").attr("pagetheme"),cachePageTheme[tableid]=usetheme?usetheme:DataTable.FULL_PAGE,cacheInit[tableid]||(cacheUserPage[tableid]=dataForm.find(".panelBar").html(),cacheUserPage[tableid]&&(cacheUserPage[tableid]=cacheUserPage[tableid].replace(/\n/g,"").replace(/\r/g,"").replace("}%","}%\r\n")),dataForm.find(".panelBar").html(""))),cacheDataRow[tableid]||(dataRow=(""+nowDataTable.find(" tr:eq(1)").html()+"").replace(/\n/g,"").replace(/\r/g,"").replace("}%","}%\r\n"),cacheDataRow[tableid]=dataRow,nowDataTable.find(" tr:eq(1)").find("td").css("border","0"),nowDataTable.find(" tr:eq(1)").css("border","0")),void 0==cacheLoadDefault[tableid]&&(table_loading_attr=nowDataTable.attr("loading"),cacheLoadDefault[tableid]=table_loading_attr?table_loading_attr:DataTable.loading_show,void 0!=easydataParams.loading&&(cacheLoadDefault[tableid]=easydataParams.loading+"")),postParam=dataForm.serialize(),loadShow(tableid,nowDataTable),easydataParams.language&&(cacheLanguage[tableid]=easydataParams.language),void 0==cacheLanguage[tableid]&&(cacheLanguage[tableid]=DataTable.default_lang),$.post(dataForm.attr("action"),postParam,function(data){if("string"==typeof data&&(data=eval("("+data+")")),cacheData[tableid]=data,dataShow(tableid,nowDataTable,dataForm,data),cacheEndFun[tableid])try{cacheEndFun[tableid](nowDataTable[0],!cacheInit[tableid])}catch(e){}cacheInit[tableid]||(cacheInit[tableid]=!0,$("#datatable_initPageData").remove())})}},entityMap={unescape:{"&":"&","<":"<",">":">",""":'"',"'":"'"}},entityRegexes={unescape:new RegExp("("+["&","<",">",""","'"].join("|")+")","g")},unescape=function(a){return null==a?"":(""+a).replace(entityRegexes["unescape"],function(a){return entityMap["unescape"][a]})},formatContent=function(content,jsondata){var reg,regExp,arrExp;return content=unescape(content),reg=/\{([^}]+)\}/g,regExp=/\%\{(.*)\}\%/g,arrExp=/\[([0-9]+)\]/g,content=content.replace(regExp,function(m,i){with(jsondata)try{try{var res=eval($.trim(i).replace(arrExp,function(a,b){return jsondata[b]}));return void 0==res?"":res}catch(e){return m}}catch(e){return m}}),content=content.replace(reg,function(m,i){with(jsondata)try{var res;return-1!=(i+"").indexOf(".")&&(res=jsondata[i]),res?res:/\[([0-9]+)\]/.test(i)?jsondata[i.substring(1,i.length-1)]:null==eval($.trim(i))?"":eval($.trim(i))}catch(e){return""}})},clone=function(a){var b,c;if(null==a||void 0==a)return a;b=a.constructor===Array?[]:{};for(c in a)b[c]="object"==typeof a[c]?clone(a[c]):a[c];return b},getPostParam=function(a){var d,b={},c="#maxPage#rowPerPage#datatableIndex#datatableCount#pageNo#totalCount#order#sort#".toLowerCase();for(d in a)-1==c.indexOf("#"+a[d].name.toLowerCase()+"#")&&(b[a[d].name]=a[d].value.replace(/(^\s+)|(\s+$)/g,""));return b},loadShow=function(a,b){if(cacheLoadDefault[a]){var c=cacheLoadDefault[a].toLowerCase();"default"==c?(void 0==cacheInitLoading[a]&&(b.find(" tr:gt(0)").remove(),cacheInitLoading[a]="loaded"),b.find(" tr:gt(0)").find("*").on("click",function(){return!1}),b.find(" tr:gt(0)").find("*").css("color","gray")):"none"==c?(void 0==cacheInitLoading[a]&&(b.find(" tr:gt(0)").remove(),cacheInitLoading[a]="loaded"),b.find("tr:gt(0)").hide()):"hide"==c?(void 0==cacheInitLoading[a]&&(b.find(" tr:gt(0)").remove(),cacheInitLoading[a]="loaded"),b.find("tr:gt(0)").css("visibility","hidden")):"show"==c?(b.find(" tr:gt(0)").remove(),$("[id='"+a+"_loading_div']").hide(),b.after("
"+DataTable.loading_msg+"
")):(b.find(" tr:gt(0)").remove(),$("[id='"+a+"_loading_div']").hide(),b.after("
"+cacheLoadDefault[a]+"
"))}},initDataAndContent=function(a,b,c,d){var j,k,l,e="",f=0,g=b.attr("value"),h="",i="";if(g){h=d[g].order,i=d[g].sort,h||(h=d.order),i||(i=d.sort),h||(h=""),i||(i=""),cacheData[a].pageNo=parseInt(d[g].pageNo),cacheData[a].rowPerPage=parseInt(d[g].rowPerPage),cacheData[a].totalCount=parseInt(d[g].totalCount),cacheData[a].order=h,cacheData[a].sort=i,cacheData[a].maxPage=Math.floor((cacheData[a].totalCount-1)/cacheData[a].rowPerPage+1),j=d[g].data;for(k in j){j[k].datatableCount=parseInt(f)+1,j[k].datatableIndex=parseInt(f);for(l in d)l!=g&&(j[k][l]=d[l]);j[k].pageNo=parseInt(d[g].pageNo),j[k].rowPerPage=parseInt(d[g].rowPerPage),j[k].totalCount=parseInt(d[g].totalCount),j[k].maxPage=Math.floor((parseInt(j[k].totalCount)-1)/parseInt(j[k].rowPerPage)+1),j[k].key=k,j[k].order=h,j[k].sort=i,e+=formatContent(cacheDataRow[a],j[k]),f++}}else{h=d.order,i=d.sort,h||(h=""),i||(i=""),cacheData[a].maxPage=Math.floor((parseInt(d.totalCount)-1)/parseInt(d.rowPerPage)+1),j=d.data;for(k in j){for(l in d)"data"!=l&&(j[k][l]=d[l]);j[k].datatableCount=parseInt(f)+1,j[k].datatableIndex=parseInt(f),j[k].key=k,j[k].maxPage=Math.floor((parseInt(j[k].totalCount)-1)/parseInt(j[k].rowPerPage)+1),j[k].order=h,j[k].sort=i,e+=formatContent(cacheDataRow[a],j[k]),f++}}return c.find(" .pages .totalCount").html(f),{content:e,dataTableOrder:h,dataTableSort:i}},dataShow=function(a,b,c,d){var f,e=initDataAndContent(a,b,c,d);pageTheme(a,cachePageTheme[a]),c.find(" .pages .totalCount").html(d["totalCount"]),c.find(" .mycombox").val(d["rowPerPage"]),c.find(" [name='pageNo']").val(d["pageNo"]),c.find(" .pages .maxPage").html(Math.floor((parseInt(d["totalCount"])-1)/parseInt(d["rowPerPage"])+1)),c.find("[name='rowPerPage']").off("change"),c.find("[name='rowPerPage']").on("change",function(){var d=$(this).val(),e=c.find("[name='pageNo']"),f=Math.floor((cacheData[a]["totalCount"]-1)/d+1);e.val()>f&&e.val(f),DataTable.load(a)}),pageCheck(a),f='"+"",e.content+=f,b.find(" tr:gt(0)").remove(),$("[id='"+a+"_loading_div']").remove(),b.append(e.content),addRowEvent(b)},dataObject=function(a,b){this.k=a,this.v=b},dataSort=function(a,b,c){var e,f,g,h,d=!0;$.isArray(a)||(d=!1),e=new Array;for(f in a)e.push(new dataObject(f,a[f]));if(/\[([0-9]+)\]/.test(b)&&(b=b.substring(1,b.length-1)),e.sort(function(a,d){return"key"==b.toLowerCase()?a.k==d.k?0:"asc"==c.toLowerCase()?a.k>d.k?1:-1:d.k>a.k?1:-1:a.v[b]==d.v[b]?0:"asc"==c.toLowerCase()?a.v[b]>d.v[b]?1:-1:d.v[b]>a.v[b]?1:-1}),g=[],d)for(h=0,f=0;f=d&&firstDisable(a,e,f),d>=c&&lastDisable(a,h,g)},pageMsgCkeck=function(a){cacheLanguage[a].first||(cacheLanguage[a].first=DataTable.default_lang.first),cacheLanguage[a].previous||(cacheLanguage[a].previous=DataTable.default_lang.previous),cacheLanguage[a].next||(cacheLanguage[a].next=DataTable.default_lang.next),cacheLanguage[a].last||(cacheLanguage[a].last=DataTable.default_lang.last),cacheLanguage[a].totalPage||(cacheLanguage[a].totalPage=DataTable.default_lang.totalPage),cacheLanguage[a].rowPerPage||(cacheLanguage[a].rowPerPage=DataTable.default_lang.rowPerPage),cacheLanguage[a].totalCount||(cacheLanguage[a].totalCount=DataTable.default_lang.totalCount)},pageNumSpan=function(a,b,c){var d,e,f,g,h;for(b=parseInt(b),d=Math.floor((parseInt(c)-1)/parseInt(cacheData[a]["rowPerPage"])+1),e=b-3,f=b+3,1>e&&(e=1,f=e+6,f>d&&(f=d)),f>d&&(f=d,e=f-6,1>e&&(e=1)),g="",h=e;f>=h;h++)g+=h==b?''+h+"":''+h+"";return g},pageTheme=function(a,b){var e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,c=$("form").has("[id='"+a+"']"),d="";b&&"no"==b.toLowerCase()?d=cacheUserPage[a]:(e=c.find(".panelBar").length,0!=e&&(f=cacheSizeArray[a],f||(g=c.find(".panelBar").attr("size"),f=[cacheData[a].rowPerPage],g&&(f=g.split(",")),cacheDefaultRow[a]&&(h="#"+f.join("#")+"#",-1!=h.indexOf("#"+cacheDefaultRow[a]+"#")?cacheDefaultRow[a]=null:f.push(cacheDefaultRow[a])),f.sort(function(a,b){return parseInt(a)-parseInt(b)}),cacheSizeArray[a]=f),pageMsgCkeck(a),i=cacheLanguage[a].rowPerPage.indexOf("{0}"),j=cacheLanguage[a].rowPerPage.substring(0,i),k=cacheLanguage[a].rowPerPage.substring(i+3),l='
'+j+""+'"+k+",",m=cacheLanguage[a].totalPage.indexOf("{0}"),n=cacheLanguage[a].totalPage.substring(0,m),o=cacheLanguage[a].totalPage.substring(m+3),p=cacheLanguage[a].totalCount.indexOf("{0}"),q=cacheLanguage[a].totalCount.substring(0,p),r=cacheLanguage[a].totalCount.substring(p+3),l+=q+''+r+"
",s='
',t=''+n+''+o+"",u=''+cacheLanguage[a].first+""+''+cacheLanguage[a].previous+"",v=""+pageNumSpan(a,cacheData[a]["pageNo"],cacheData[a]["totalCount"])+"",w=''+cacheLanguage[a].next+""+''+cacheLanguage[a].last+"",x='',x+='>>',y="
",d=b&&"FULL"!=b.toUpperCase()?"SIMPLE"==b.toUpperCase()?l+s+t+u+w+x+y:l+s+t+u+v+w+x+y:l+s+t+u+v+w+x+y)),c.find(".panelBar").html(formatContent(d,cacheData[a])),c.find(".panelBar .customPaging").show()},loadInit=function(){$(".pagego").hover(function(){$(this).addClass("pageGoHover")},function(){$(this).removeClass("pageGoHover")})},pageRangeChk=function(a){var b=$("form").has("[id='"+a+"']"),c=b.find("[name='pageNo']"),d=b.find("[name='rowPerPage']").val(),e=Math.floor((cacheData[a]["totalCount"]-1)/d+1);c.val()>e&&c.val(e)},fldeChk=function(a,b){firstEnable(a),lastEnable(a),1>=b&&(firstDisable(a),cacheData[a]["maxPage"]>1&&lastEnable(a)),b>=cacheData[a]["maxPage"]&&(lastDisable(a),cacheData[a]["maxPage"]>1&&firstEnable(a))},dtSort=function(){$("table:has([sort]),table:has([staticSort])").each(function(){var a=$(this),b=a.attr("id");a.find("[sort],[staticSort]").each(function(){var f,g,h,a=$(this),c=order_default,d=order_up,e=order_down;orderCache&&$.each(orderCache,function(a){var h=","+a.toLowerCase()+",";return tableidTmp=","+b.toLowerCase()+",",-1!=h.indexOf(tableidTmp)&&(f=!0),f?(orderCache[a].order_default?c=orderCache[a].order_default:"",orderCache[a].order_up?d=orderCache[a].order_up:"",orderCache[a].order_down?e=orderCache[a].order_down:"",void 0):void 0}),g=a.find("span.sortArrow").length>0?a.html().replace(a.find("span.sortArrow").html(),c):a.html()+""+c+"",a.html(g),a.css("cursor","pointer"),a.off("click"),h=$("form").has("[id='"+b+"']"),a.on("click",function(){var i,g=a.attr("sort")||a.attr("staticSort");h.find("input[name='sort']").length>0&&(h.find("input[name='sort']").val(g),h.find("input[name='order']").val("asc"==h.find("input[name='order']").val().toLowerCase()?"desc":"asc"),i=$(this).find("[name='orderspan']"),cacheOrderArrow[b]&&cacheOrderArrow[b].html(c),"asc"==h.find("input[name='order']").val()?i.html(d):"desc"==h.find("input[name='order']").val()?i.html(e):i.html(c),cacheOrderArrow[b]=i,a.attr("sort")?DataTable.load(b):DataTable.staticDataSort(b,g,h.find("input[name='order']").val()))})}),a.find("[sort],[staticSort]").hover(function(){var a=$(this).find("[name='orderspan']");a.removeClass("sortArrow"),a.removeClass("sortArrowDown"),a.addClass("sortArrowHover")},function(){var a=$(this).find("[name='orderspan']");a.removeClass("sortArrowHover"),a.addClass("sortArrow")}),a.find("[sort],[staticSort]").on("mousedown",function(){var a=$(this).find("[name='orderspan']");a.removeClass("sortArrowHover"),a.addClass("sortArrowDown")}),a.find("[sort],[staticSort]").on("mouseup",function(){var a=$(this).find("[name='orderspan']");a.removeClass("sortArrowDown"),a.addClass("sortArrowHover")})})},addRowEvent=function(a){var b,c;a.find(" tr:even").addClass("evenColor"),a.find(" tr").hover(function(){$(this).addClass("trHover")},function(){$(this).removeClass("trHover")}),a.find(" tr").on("click",function(){$(this).hasClass("trClick")?($(this).removeClass("trClick"),b=null):(b&&b.removeClass("trClick"),$(this).addClass("trClick"),b=$(this))}),c=a.attr("id"),rowEventsDT[c]?$.each(rowEventsDT[c],function(b,c){a.find(" tr").on(b,c)}):rowEvents&&$.each(rowEvents,function(b,c){a.find(" tr").on(b,c)})},DataTable={default_row:5,default_matchMode:"like_i",loading_show:"default",order_default:"↑↓",order_up:"↑",order_down:"↓",sort:{},loading_msg:"Data is loading ......",default_lang:{first:"first",previous:"previous",next:"next",last:"last",totalCount:"total {0} rows",totalPage:"total {0} pages",rowPerPage:"page for {0} rows"},load:function(a,b){innerLoad(a,b)},resetOrder:function(a){var b=$("form").has("[id='"+a+"']");b.find("[name='order']").val(""),b.find("[name='sort']").val(""),cacheOrderArrow[a]&&cacheOrderArrow[a].html("↑↓")},reload:function(a){DataTable.resetOrder(a),DataTable.load(a)},out:function(a){return a},first:function(a){var b=$("form").has("[id='"+a+"']"),c=b.find("[name='pageNo']");c.val(1),fldeChk(a,1),this.load(a)},prev:function(a){var b=$("form").has("[id='"+a+"']"),c=b.find("[name='pageNo']");c.val(parseInt(cacheData[a]["pageNo"])-1),fldeChk(a,c.val()),this.load(a)},next:function(a){var b=$("form").has("[id='"+a+"']"),c=b.find("[name='pageNo']");c.val(parseInt(cacheData[a]["pageNo"])+1),fldeChk(a,c.val()),this.load(a)},last:function(a){var b=$("form").has("[id='"+a+"']"),c=b.find("[name='pageNo']");c.val(cacheData[a]["maxPage"]),fldeChk(a,cacheData[a]["maxPage"]),this.load(a)},gopage:function(a){var b,c;pageRangeChk(a),b=$("form").has("[id='"+a+"']"),c=b.find("[name='pageNo']"),cacheData[a]["pageNo"]!=c.val()&&Validate.integer.test(c.val())&&(fldeChk(a,c.val()),this.load(a))},numgoto:function(a,b){var c=$("form").has("[id='"+a+"']"),d=c.find("[name='pageNo']");d.val($(b.target).text()),fldeChk(a,d.val()),this.load(a)},go:function(a,b,c){var e,f,g,d=$("form").has("[id='"+a+"']");d&&Validate.integer.test(b)&&(b=parseInt(b),0>=b&&(b=1),c&&Validate.integer.test(c)||(c=cacheData[a]["rowPerPage"]),e=Math.floor((cacheData[a]["totalCount"]-1)/c+1),b>e&&(b=e),f=d.find("[name='pageNo']"),f.val()?f.val(b):d.append(''),g=d.find("[name='rowPerPage']"),g.val()?g.val(c):d.append(''),d.find("[name='rowPerPage']").val(c),cacheData[a]["pageNo"]!=b&&this.load(a))},checkAll:function(a,b){var c=a.checked;c?$(a.form).find("[name='"+b+"']").each(function(){this.checked=!0}):$(a.form).find("[name='"+b+"']").each(function(){this.checked=!1})},setOrder:function(a,b){b?(orderCache[b]={},orderCache[b].order_default=a.order_default,orderCache[b].order_up=a.order_up,orderCache[b].order_down=a.order_down):(order_default=a.order_default,order_up=a.order_up,order_down=a.order_down),dtSort()},setRowEvent:function(a,b){b?rowEventsDT[b]=a:rowEvents=a,$(".datatable").each(function(){addRowEvent($(this))})},init:function(){$(".pagego").hover(function(){$(this).addClass("pageGoHover")},function(){$(this).removeClass("pageGoHover")}),$(".datatable").find("tr:eq(1)").css("visibility","hidden"),$(".easydatatable").each(function(){var a=$(this).attr("id");cacheInit[a]||a&&DataTable.load(a)}),$("[check]").on("click",function(){DataTable.checkAll(this,$(this).attr("check"))}),$(".data_search").each(function(){var a=$(this.form).find("table[id]").attr("id"),b=$(this);b.off("click"),b.on("click",function(){a&&DataTable.load(a)})}),dtSort()}};window.DataTable=DataTable}(window); -------------------------------------------------------------------------------- /easydatatable/easy.datatable-2.4.0.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * jQuery EasyDataTable Plugin 3 | * 4 | * Version 2.4.0 5 | * 6 | * http://easyproject.cn 7 | * https://github.com/ushelp/EasyDataTable 8 | * 9 | * Copyright 2014 Ray [ inthinkcolor@gmail.com ] 10 | * 11 | * Dependencies: jQuery 12 | * 13 | */ 14 | !function(window){var cacheData={},cacheDataRow={},cacheThLength={},cachePageTheme={},cacheLanguage={},cacheOrderArrow={},cacheInitLoading={},cacheStartFun={},cacheEndFun={},cacheUserPage={},cacheInit={},cacheDefaultRow={},cacheInitStaticData={},cacheStaticData={},cacheStaticTable={},cacheLoadDefault={},cacheSizeArray={},order_default="↑↓",order_up="↑",order_down="↓",orderCache={},rowEvents={},rowEventsDT={},innerLoad=function(tableid,easydataParams,jsonData,staticFlag){var dataForm,pagenoEle,rowperpageEle,defRow,initPage,usetheme,dataRow,table_loading_attr,data,valueObject,j,i,rowPerPage,pageNo,s,e,pageData,nowDataTable=$("[id='"+tableid+"']");if(0!=nowDataTable.length){if(easydataParams=void 0==easydataParams?{}:easydataParams,dataForm=$("form").has(nowDataTable),pagenoEle=dataForm.find("[name='pageNo']"),rowperpageEle=dataForm.find("[name='rowPerPage']"),Validate.integer.test(pagenoEle.val())||pagenoEle.val(1),Validate.integer.test(rowperpageEle.val())||rowperpageEle.val(this.default_row),cacheInit[tableid]?dataForm.find(".panelBar [id='datatable_pagenum']").html(pageNumSpan(tableid,pagenoEle.val(),cacheData[tableid]["totalCount"])):(cacheInit[tableid]=!1,easydataParams.start&&(cacheStartFun[tableid]=easydataParams.start),easydataParams.end&&(cacheEndFun[tableid]=easydataParams.end),defRow=DataTable.default_row,Validate.integer.test(easydataParams.row)?defRow=easydataParams.row:(defRow=dataForm.find(".panelBar").attr("row"),Validate.integer.test(defRow)||(defRow=DataTable.default_row)),cacheDefaultRow[tableid]=defRow+"",initPage="",dataForm.append(initPage)),cacheStartFun[tableid])try{cacheStartFun[tableid](nowDataTable[0],!cacheInit[tableid])}catch(e){}if(void 0!=easydataParams.pagetheme&&(cachePageTheme[tableid]=easydataParams.pagetheme),cachePageTheme[tableid]||(usetheme=dataForm.find(".panelBar").attr("pagetheme"),cachePageTheme[tableid]=usetheme?usetheme:DataTable.FULL_PAGE,cacheInit[tableid]||(cacheUserPage[tableid]=dataForm.find(".panelBar").html(),cacheUserPage[tableid]&&(cacheUserPage[tableid]=cacheUserPage[tableid].replace(/\n/g,"").replace(/\r/g,"").replace("}%","}%\r\n")),dataForm.find(".panelBar").html(""))),cacheDataRow[tableid]||(dataRow=(""+nowDataTable.find(" tr:eq(1)").html()+"").replace(/\n/g,"").replace(/\r/g,"").replace("}%","}%\r\n"),cacheDataRow[tableid]=dataRow,nowDataTable.find(" tr:eq(1)").find("td").css("border","0"),nowDataTable.find(" tr:eq(1)").css("border","0")),void 0==cacheLoadDefault[tableid]&&(table_loading_attr=nowDataTable.attr("loading"),cacheLoadDefault[tableid]=table_loading_attr?table_loading_attr:DataTable.loading_show,void 0!=easydataParams.loading&&(cacheLoadDefault[tableid]=easydataParams.loading+"")),postParam=dataForm.serialize(),loadShow(tableid,nowDataTable),easydataParams.language&&(cacheLanguage[tableid]=easydataParams.language),void 0==cacheLanguage[tableid]&&(cacheLanguage[tableid]=DataTable.default_lang),staticFlag){if(data=jsonData,valueObject=nowDataTable.attr("value"))if($.isArray(data[valueObject].data))data.totalCount=data[valueObject].data.length,data[valueObject].totalCount=data[valueObject].data.length;else{j=0;for(i in data[valueObject].data)j++;data.totalCount=j,data[valueObject].totalCount=j}else if($.isArray(data.data))data.totalCount=data.data.length;else{j=0;for(i in data.data)j++;data.totalCount=j}if(rowPerPage=data.totalCount,valueObject?jsonData.rowPerPage?(dataForm.find("[name='rowPerPage']").val(jsonData.rowPerPage),rowPerPage=jsonData.rowPerPage):jsonData[valueObject].rowPerPage&&(dataForm.find("[name='rowPerPage']").val(jsonData[valueObject].rowPerPage),rowPerPage=jsonData[valueObject].rowPerPage):jsonData.rowPerPage?(dataForm.find("[name='rowPerPage']").val(jsonData.rowPerPage),rowPerPage=jsonData.rowPerPage):Validate.integer.test(dataForm.find(".panelBar").attr("row"))&&(rowPerPage=dataForm.find(".panelBar").attr("row")),easydataParams.row&&(rowPerPage=easydataParams.row),pageNo=data.pageNo,valueObject?(pageNo||(pageNo=data[valueObject].pageNo),pageNo||(pageNo=1)):pageNo||(pageNo=1),s=(pageNo-1)*rowPerPage,e=parseInt(s)+parseInt(rowPerPage),valueObject){pageData={},$.isArray(data[valueObject].data)&&(pageData=[]),j=0;for(i in data[valueObject].data)j>=s&&e>j&&(pageData[i]=data[valueObject].data[i]),j++;data.pageNo=pageNo,data.rowPerPage=rowPerPage,data[valueObject].pageNo=pageNo,data[valueObject].rowPerPage=rowPerPage,data[valueObject].data=pageData}else{pageData={},$.isArray(data.data)&&(pageData=[]),j=0;for(i in data.data)j>=s&&e>j&&(pageData[i]=data.data[i]),j++;data.pageNo=pageNo,data.rowPerPage=rowPerPage,data.data=pageData}if(cacheDefaultRow[tableid]=rowPerPage+"",cacheData[tableid]=data,dataShow(tableid,nowDataTable,dataForm,data),cacheEndFun[tableid])try{cacheEndFun[tableid](nowDataTable[0],!cacheInit[tableid])}catch(e){}cacheInit[tableid]||(cacheInit[tableid]=!0,$("#datatable_initPageData").remove())}else $.post(dataForm.attr("action"),postParam,function(data){if("string"==typeof data&&(data=eval("("+data+")")),cacheData[tableid]=data,dataShow(tableid,nowDataTable,dataForm,data),cacheEndFun[tableid])try{cacheEndFun[tableid](nowDataTable[0],!cacheInit[tableid])}catch(e){}cacheInit[tableid]||(cacheInit[tableid]=!0,$("#datatable_initPageData").remove())})}},staticPagination=function(a){var b,c,d;DataTable.resetOrder(a),b=clone(cacheStaticTable[a]),c=$("[id='"+a+"']"),0!=c.length&&(d=$("form").has("[id='"+a+"']"),b.pageNo=d.find("[name='pageNo']").val(),b.rowPerPage=d.find("[name='rowPerPage']").val(),innerLoad(a,{},b,!0))},entityMap={unescape:{"&":"&","<":"<",">":">",""":'"',"'":"'"}},entityRegexes={unescape:new RegExp("("+["&","<",">",""","'"].join("|")+")","g")},unescape=function(a){return null==a?"":(""+a).replace(entityRegexes["unescape"],function(a){return entityMap["unescape"][a]})},formatContent=function(content,jsondata){var reg,regExp,arrExp;return content=unescape(content),reg=/\{([^}]+)\}/g,regExp=/\%\{(.*)\}\%/g,arrExp=/\[([0-9]+)\]/g,content=content.replace(regExp,function(m,i){with(jsondata)try{var res=eval($.trim(i).replace(arrExp,function(a,b){return jsondata[b]}));return void 0==res?"":res}catch(e){return m}}),content=content.replace(reg,function(m,i,i2){with(jsondata)try{var res;return-1!=(i+"").indexOf(".")&&(res=jsondata[i]),res?res:/\[([0-9]+)\]/.test(i)?jsondata[i.substring(1,i.length-1)]:null==eval($.trim(i))?"":eval($.trim(i))}catch(e){return""}})},clone=function(a){var b,c;if(null==a||void 0==a)return a;b=a.constructor===Array?[]:{};for(c in a)b[c]="object"==typeof a[c]?clone(a[c]):a[c];return b},staticMatch=function(a,b,c){this.name=a,this.value=b,this.match=c},regFilter=function(a){return a.replace(/\\/g,"\\\\").replace(/\+|\.|\*|\?|\^|\$|\[|\]|\(|\)|\{|\}|\/|\|/g,"\\$&")},sqlFilter=function(a){return a.replace(/\\/g,"\\\\").replace(/\+|\.|\*|\?|\^|\$|\(|\)|\{|\}|\/|\|/g,"\\$&").replace(/_/g,".").replace(/%/g,".*")},matchReg=function(a,b,c){var d="^",e="$";return"extra"==a||"extra_i"==a?b=regFilter(b):"sql"==a||"sql_i"==a?b=sqlFilter(b):"like"==a||"like_i"==a?(b=regFilter(b),d="",e=""):(d="",e=""),new RegExp(d+b+e,c)},filterStaticData=function(a,b,c,d){var h,i,j,k,l,m,n,e=DataTable.default_matchMode.toLowerCase(),f=-1!=e.indexOf("_i")?"i":"",g={};$.each(b,function(a,b){/\[([0-9]+)\]/.test(a)&&(a=a.substring(1,a.length-1)),""!=$.trim(b)&&(g[a]=new staticMatch(a,matchReg(e,b,f),e))}),d.find(":input[mode]").each(function(a,b){var c,d,e;b=$.trim($(this).val()),""!=b&&(c=$(this).attr("name"),d=$(this).attr("mode").toLowerCase(),/\[([0-9]+)\]/.test(c)&&(c=c.substring(1,c.length-1)),"extra"!=d&&"extra_i"!=d&&"sql"!=d&&"sql_i"!=d&&"like"!=d&&"like_i"!=d&&"reg"!=d&&"reg_i"!=d&&(d=DataTable.default_matchMode.toLowerCase()),e=-1!=d.indexOf("_i")?"i":"",g[c]=new staticMatch(c,matchReg(d,b,e),d))}),h=$.isArray(a),i={},h&&(i=[]),j=!0;for(k in g)""!=g[k]&&(j=!1);if(j)return a;if(l=0,c)for(m in a){n=!1;for(k in g)try{if(""!=g[k]&&a[m][k]&&g[k].value.test(a[m][k])){n=!0;break}}catch(o){}n&&(h?(i[l]=a[m],l++):i[m]=a[m])}else for(m in a){n=!0;for(k in g)try{if(!a[m][k]){n=!1;break}if(!g[k].value.test(a[m][k])){n=!1;break}}catch(o){n=!1;break}n&&(h?(i[l]=a[m],l++):i[m]=a[m])}return i},getPostParam=function(a){var d,b={},c="#maxPage#rowPerPage#datatableIndex#datatableCount#pageNo#totalCount#order#sort#".toLowerCase();for(d in a)-1==c.indexOf("#"+a[d].name.toLowerCase()+"#")&&(b[a[d].name]=a[d].value.replace(/(^\s+)|(\s+$)/g,""));return b},loadShow=function(a,b){if(cacheLoadDefault[a]){var c=cacheLoadDefault[a].toLowerCase();"default"==c?(void 0==cacheInitLoading[a]&&(b.find(" tr:gt(0)").remove(),cacheInitLoading[a]="loaded"),b.find(" tr:gt(0)").find("*").on("click",function(){return!1}),b.find(" tr:gt(0)").find("*").css("color","gray")):"none"==c?(void 0==cacheInitLoading[a]&&(b.find(" tr:gt(0)").remove(),cacheInitLoading[a]="loaded"),b.find("tr:gt(0)").hide()):"hide"==c?(void 0==cacheInitLoading[a]&&(b.find(" tr:gt(0)").remove(),cacheInitLoading[a]="loaded"),b.find("tr:gt(0)").css("visibility","hidden")):"show"==c?(b.find(" tr:gt(0)").remove(),$("[id='"+a+"_loading_div']").hide(),b.after("
"+DataTable.loading_msg+"
")):(b.find(" tr:gt(0)").remove(),$("[id='"+a+"_loading_div']").hide(),b.after("
"+cacheLoadDefault[a]+"
"))}},initDataAndContent=function(a,b,c,d,e,f,g){var m,n,o,h="",i=0,j=b.attr("value"),k="",l="";if(j){k=d[j].order,l=d[j].sort,k||(k=d.order),l||(l=d.sort),k||(k=""),l||(l=""),cacheData[a].pageNo=parseInt(d[j].pageNo),cacheData[a].rowPerPage=parseInt(d[j].rowPerPage),cacheData[a].totalCount=parseInt(d[j].totalCount),cacheData[a].order=k,cacheData[a].sort=l,cacheData[a].maxPage=Math.floor((cacheData[a].totalCount-1)/cacheData[a].rowPerPage+1),m=d[j].data,e&&(m=filterStaticData(d[j].data,e,f,c)),cacheStaticData[a]=clone(m);for(n in m){m[n].datatableCount=parseInt(i)+1,m[n].datatableIndex=parseInt(i);for(o in d)o!=j&&(m[n][o]=d[o]);m[n].pageNo=parseInt(d[j].pageNo),m[n].rowPerPage=parseInt(d[j].rowPerPage),m[n].totalCount=parseInt(d[j].totalCount),m[n].maxPage=Math.floor((parseInt(m[n].totalCount)-1)/parseInt(m[n].rowPerPage)+1),m[n].key=n,m[n].order=k,m[n].sort=l,g||(h+=formatContent(cacheDataRow[a],m[n])),i++}}else{k=d.order,l=d.sort,k||(k=""),l||(l=""),cacheData[a].maxPage=Math.floor((parseInt(d.totalCount)-1)/parseInt(d.rowPerPage)+1),m=d.data,e&&(m=filterStaticData(d.data,e,f,c)),cacheStaticData[a]=clone(m);for(n in m){for(o in d)"data"!=o&&(m[n][o]=d[o]);m[n].datatableCount=parseInt(i)+1,m[n].datatableIndex=parseInt(i),m[n].key=n,m[n].maxPage=Math.floor((parseInt(m[n].totalCount)-1)/parseInt(m[n].rowPerPage)+1),m[n].order=k,m[n].sort=l,g||(h+=formatContent(cacheDataRow[a],m[n])),i++}}return c.find(" .pages .totalCount").html(i),{content:h,dataTableOrder:k,dataTableSort:l}},dataShow=function(a,b,c,d,e,f,g){var i,h=initDataAndContent(a,b,c,d,e,f,g);e||(pageTheme(a,cachePageTheme[a]),c.find(" .pages .totalCount").html(d["totalCount"]),c.find(" .mycombox").val(d["rowPerPage"]),c.find(" [name='pageNo']").val(d["pageNo"]),c.find(" .pages .maxPage").html(Math.floor((parseInt(d["totalCount"])-1)/parseInt(d["rowPerPage"])+1)),c.find("[name='rowPerPage']").off("change"),c.find("[name='rowPerPage']").on("change",function(){var d=$(this).val(),e=c.find("[name='pageNo']"),f=Math.floor((cacheData[a]["totalCount"]-1)/d+1);e.val()>f&&e.val(f),cacheStaticTable[a]?staticPagination(a):DataTable.load(a)}),pageCheck(a)),i='"+"",h.content+=i,b.find(" tr:gt(0)").remove(),$("[id='"+a+"_loading_div']").remove(),b.append(h.content),addRowEvent(b)},dataObject=function(a,b){this.k=a,this.v=b},dataSort=function(a,b,c){var e,f,g,h,d=!0;$.isArray(a)||(d=!1),e=new Array;for(f in a)e.push(new dataObject(f,a[f]));if(/\[([0-9]+)\]/.test(b)&&(b=b.substring(1,b.length-1)),e.sort(function(a,d){return"key"==b.toLowerCase()?a.k==d.k?0:"asc"==c.toLowerCase()?a.k>d.k?1:-1:d.k>a.k?1:-1:a.v[b]==d.v[b]?0:"asc"==c.toLowerCase()?a.v[b]>d.v[b]?1:-1:d.v[b]>a.v[b]?1:-1}),g=[],d)for(h=0,f=0;f=d&&firstDisable(a,e,f),d>=c&&lastDisable(a,h,g)},pageMsgCkeck=function(a){cacheLanguage[a].first||(cacheLanguage[a].first=DataTable.default_lang.first),cacheLanguage[a].previous||(cacheLanguage[a].previous=DataTable.default_lang.previous),cacheLanguage[a].next||(cacheLanguage[a].next=DataTable.default_lang.next),cacheLanguage[a].last||(cacheLanguage[a].last=DataTable.default_lang.last),cacheLanguage[a].totalPage||(cacheLanguage[a].totalPage=DataTable.default_lang.totalPage),cacheLanguage[a].rowPerPage||(cacheLanguage[a].rowPerPage=DataTable.default_lang.rowPerPage),cacheLanguage[a].totalCount||(cacheLanguage[a].totalCount=DataTable.default_lang.totalCount)},pageNumSpan=function(a,b,c){var d,e,f,g,h;for(b=parseInt(b),d=Math.floor((parseInt(c)-1)/parseInt(cacheData[a]["rowPerPage"])+1),e=b-3,f=b+3,1>e&&(e=1,f=e+6,f>d&&(f=d)),f>d&&(f=d,e=f-6,1>e&&(e=1)),g="",h=e;f>=h;h++)g+=h==b?''+h+"":''+h+"";return g},pageTheme=function(a,b){var e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,c=$("form").has("[id='"+a+"']"),d="";b&&"no"==b.toLowerCase()?d=cacheUserPage[a]:(e=c.find(".panelBar").length,0!=e&&(f=cacheSizeArray[a],f||(g=c.find(".panelBar").attr("size"),f=[cacheData[a].rowPerPage],g&&(f=g.split(",")),cacheDefaultRow[a]&&(h="#"+f.join("#")+"#",-1!=h.indexOf("#"+cacheDefaultRow[a]+"#")?cacheDefaultRow[a]=null:f.push(cacheDefaultRow[a])),f.sort(function(a,b){return parseInt(a)-parseInt(b)}),cacheSizeArray[a]=f),pageMsgCkeck(a),i=cacheLanguage[a].rowPerPage.indexOf("{0}"),j=cacheLanguage[a].rowPerPage.substring(0,i),k=cacheLanguage[a].rowPerPage.substring(i+3),l='
'+j+""+'"+k+",",m=cacheLanguage[a].totalPage.indexOf("{0}"),n=cacheLanguage[a].totalPage.substring(0,m),o=cacheLanguage[a].totalPage.substring(m+3),p=cacheLanguage[a].totalCount.indexOf("{0}"),q=cacheLanguage[a].totalCount.substring(0,p),r=cacheLanguage[a].totalCount.substring(p+3),l+=q+''+r+"
",s='
',t=''+n+''+o+"",u=''+cacheLanguage[a].first+""+''+cacheLanguage[a].previous+"",v=""+pageNumSpan(a,cacheData[a]["pageNo"],cacheData[a]["totalCount"])+"",w=''+cacheLanguage[a].next+""+''+cacheLanguage[a].last+"",x='',x+='>>',y="
",d=b&&"FULL"!=b.toUpperCase()?"SIMPLE"==b.toUpperCase()?l+s+t+u+w+x+y:l+s+t+u+v+w+x+y:l+s+t+u+v+w+x+y)),c.find(".panelBar").html(formatContent(d,cacheData[a])),c.find(".panelBar .customPaging").show()},loadInit=function(){$(".pagego").hover(function(){$(this).addClass("pageGoHover")},function(){$(this).removeClass("pageGoHover")})},doStaticSearch=function(a,b,c,d){var e,f,g,i,j,k;if(DataTable.resetOrder(a),e=$("[id='"+a+"']"),0!=e.length){if(f=$("form").has("[id='"+a+"']"),g=f.find("[name='pageNo']"),g.val(1),cacheStartFun[a])try{cacheStartFun[a](e[0],!cacheInit[a])}catch(h){}if(loadShow(a,e),postParam=f.serializeArray(),i=getPostParam(postParam),d?(initDataAndContent(a,e,f,c,i,b,d),j=e.attr("value"),k=cacheStaticTable[a],j?k[j].data=cacheStaticData[a]:k.data=cacheStaticData[a],cacheStaticTable[a]=clone(k),f=$("form").has("[id='"+a+"']"),k.pageNo=f.find("[name='pageNo']").val(),k.rowPerPage=f.find("[name='rowPerPage']").val(),innerLoad(a,{},k,!0)):dataShow(a,e,f,c,i,b,d),cacheEndFun[a])try{cacheEndFun[a](e[0],!cacheInit[a])}catch(h){}}},pageRangeChk=function(a){var b=$("form").has("[id='"+a+"']"),c=b.find("[name='pageNo']"),d=b.find("[name='rowPerPage']").val(),e=Math.floor((cacheData[a]["totalCount"]-1)/d+1);c.val()>e&&c.val(e)},fldeChk=function(a,b){firstEnable(a),lastEnable(a),1>=b&&(firstDisable(a),cacheData[a]["maxPage"]>1&&lastEnable(a)),b>=cacheData[a]["maxPage"]&&(lastDisable(a),cacheData[a]["maxPage"]>1&&firstEnable(a))},dtSort=function(){$("table:has([sort]),table:has([staticSort])").each(function(){var a=$(this),b=a.attr("id");a.find("[sort],[staticSort]").each(function(){var f,g,h,a=$(this),c=order_default,d=order_up,e=order_down;orderCache&&$.each(orderCache,function(a){var h=","+a.toLowerCase()+",";return tableidTmp=","+b.toLowerCase()+",",-1!=h.indexOf(tableidTmp)&&(f=!0),f?(orderCache[a].order_default?c=orderCache[a].order_default:"",orderCache[a].order_up?d=orderCache[a].order_up:"",orderCache[a].order_down?e=orderCache[a].order_down:"",void 0):void 0}),g=a.find("span.sortArrow").length>0?a.html().replace(a.find("span.sortArrow").html(),c):a.html()+""+c+"",a.html(g),a.css("cursor","pointer"),a.off("click"),h=$("form").has("[id='"+b+"']"),a.on("click",function(){var i,g=a.attr("sort")||a.attr("staticSort");h.find("input[name='sort']").length>0&&(h.find("input[name='sort']").val(g),h.find("input[name='order']").val("asc"==h.find("input[name='order']").val().toLowerCase()?"desc":"asc"),i=$(this).find("[name='orderspan']"),cacheOrderArrow[b]&&cacheOrderArrow[b].html(c),"asc"==h.find("input[name='order']").val()?i.html(d):"desc"==h.find("input[name='order']").val()?i.html(e):i.html(c),cacheOrderArrow[b]=i,a.attr("sort")?DataTable.load(b):DataTable.staticDataSort(b,g,h.find("input[name='order']").val()))})}),a.find("[sort],[staticSort]").hover(function(){var a=$(this).find("[name='orderspan']");a.removeClass("sortArrow"),a.removeClass("sortArrowDown"),a.addClass("sortArrowHover")},function(){var a=$(this).find("[name='orderspan']");a.removeClass("sortArrowHover"),a.addClass("sortArrow")}),a.find("[sort],[staticSort]").on("mousedown",function(){var a=$(this).find("[name='orderspan']");a.removeClass("sortArrowHover"),a.addClass("sortArrowDown")}),a.find("[sort],[staticSort]").on("mouseup",function(){var a=$(this).find("[name='orderspan']");a.removeClass("sortArrowDown"),a.addClass("sortArrowHover")})})},addRowEvent=function(a){var b,c;a.find(" tr:even").addClass("evenColor"),a.find(" tr").hover(function(){$(this).addClass("trHover")},function(){$(this).removeClass("trHover")}),a.find(" tr").on("click",function(){$(this).hasClass("trClick")?($(this).removeClass("trClick"),b=null):(b&&b.removeClass("trClick"),$(this).addClass("trClick"),b=$(this))}),c=a.attr("id"),rowEventsDT[c]?$.each(rowEventsDT[c],function(b,c){a.find(" tr").on(b,c)}):rowEvents&&$.each(rowEvents,function(b,c){a.find(" tr").on(b,c)})},DataTable={default_row:5,default_matchMode:"like_i",loading_show:"default",loading_msg:"Data is loading ......",default_lang:{first:"first",previous:"previous",next:"next",last:"last",totalCount:"total {0} rows",totalPage:"total {0} pages",rowPerPage:"page for {0} rows"},staticLoad:function(tableid,jsonData,easydataParams){"string"==typeof jsonData&&(jsonData=eval("("+jsonData+")")),cacheStaticTable[tableid]=clone(jsonData),cacheInitStaticData[tableid]=clone(jsonData),innerLoad(tableid,easydataParams,clone(jsonData),!0)},fileLoad:function(a,b,c){$.post(b,function(b){cacheStaticTable[a]=clone(b),cacheInitStaticData[a]=clone(b),innerLoad(a,c,clone(b),!0)})},load:function(a,b){innerLoad(a,b)},resetOrder:function(a){var b=$("form").has("[id='"+a+"']");b.find("[name='order']").val(""),b.find("[name='sort']").val(""),cacheOrderArrow[a]&&cacheOrderArrow[a].html("↑↓")},reload:function(a){DataTable.resetOrder(a),cacheStaticTable[a]?staticPagination(a):DataTable.load(a)},out:function(a){return a},staticDataSort:function(a,b,c){var e,f,g,h,i,j,k,l,m,d=$("[id='"+a+"']");if(0!=d.length){if(e=$("form").has("[id='"+a+"']"),f="",g=0,h=d.attr("value"),i=cacheData[a],h){j=dataSort(cacheStaticData[a],b,c);for(k in j){j[k].datatableCount=parseInt(g)+1,j[k].datatableIndex=parseInt(g);for(l in i)l!=h&&(j[k][l]=i[l]);j[k].pageNo=parseInt(i[h].pageNo),j[k].rowPerPage=parseInt(i[h].rowPerPage),j[k].totalCount=parseInt(i[h].totalCount),j[k].maxPage=Math.floor((parseInt(j[k].totalCount)-1)/parseInt(j[k].rowPerPage)+1),j[k].key=k,j[k].order=c,j[k].sort=b,f+=formatContent(cacheDataRow[a],j[k]),g++}e.find(" .pages .totalCount").html(g)}else{j=dataSort(cacheStaticData[a],b,c);for(k in j){for(l in i)"data"!=l&&(j[k][l]=i[l]);j[k].datatableCount=parseInt(g)+1,j[k].datatableIndex=parseInt(g),j[k].key=k,j[k].maxPage=Math.floor((parseInt(j[k].totalCount)-1)/parseInt(j[k].rowPerPage)+1),j[k].order=c,j[k].sort=b,f+=formatContent(cacheDataRow[a],j[k]),g++}e.find(" .pages .totalCount").html(g)}m='"+"",f+=m,d.find(" tr:gt(0)").remove(),$("[id='"+a+"_loading_div']").remove(),d.append(f),addRowEvent(d)}},staticSearchAll:function(a,b){doStaticSearch(a,b,cacheInitStaticData[a],!0)},staticSearch:function(a,b){doStaticSearch(a,b,cacheData[a])},first:function(a){var b=$("form").has("[id='"+a+"']"),c=b.find("[name='pageNo']");c.val(1),fldeChk(a,1),cacheStaticTable[a]?staticPagination(a):this.load(a)},prev:function(a){var b=$("form").has("[id='"+a+"']"),c=b.find("[name='pageNo']");c.val(parseInt(cacheData[a]["pageNo"])-1),fldeChk(a,c.val()),cacheStaticTable[a]?staticPagination(a):this.load(a)},next:function(a){var b=$("form").has("[id='"+a+"']"),c=b.find("[name='pageNo']");c.val(parseInt(cacheData[a]["pageNo"])+1),fldeChk(a,c.val()),cacheStaticTable[a]?staticPagination(a):this.load(a)},last:function(a){var b=$("form").has("[id='"+a+"']"),c=b.find("[name='pageNo']");c.val(cacheData[a]["maxPage"]),fldeChk(a,cacheData[a]["maxPage"]),cacheStaticTable[a]?staticPagination(a):this.load(a)},gopage:function(a){var b,c;pageRangeChk(a),b=$("form").has("[id='"+a+"']"),c=b.find("[name='pageNo']"),cacheData[a]["pageNo"]!=c.val()&&Validate.integer.test(c.val())&&(fldeChk(a,c.val()),cacheStaticTable[a]?staticPagination(a):this.load(a))},numgoto:function(a,b){var c=$("form").has("[id='"+a+"']"),d=c.find("[name='pageNo']");d.val($(b.target).text()),fldeChk(a,d.val()),cacheStaticTable[a]?staticPagination(a):this.load(a)},go:function(a,b,c){var e,f,g,d=$("form").has("[id='"+a+"']");d&&Validate.integer.test(b)&&(b=parseInt(b),0>=b&&(b=1),c&&Validate.integer.test(c)||(c=cacheData[a]["rowPerPage"]),e=Math.floor((cacheData[a]["totalCount"]-1)/c+1),b>e&&(b=e),f=d.find("[name='pageNo']"),f.val()?f.val(b):d.append(''),g=d.find("[name='rowPerPage']"),g.val()?g.val(c):d.append(''),d.find("[name='rowPerPage']").val(c),cacheData[a]["pageNo"]!=b&&(cacheStaticTable[a]?staticPagination(a):this.load(a)))},checkAll:function(a,b){var c=a.checked;c?$(a.form).find("[name='"+b+"']").each(function(){this.checked=!0}):$(a.form).find("[name='"+b+"']").each(function(){this.checked=!1})},setOrder:function(a,b){b?(orderCache[b]={},orderCache[b].order_default=a.order_default,orderCache[b].order_up=a.order_up,orderCache[b].order_down=a.order_down):(order_default=a.order_default,order_up=a.order_up,order_down=a.order_down),dtSort()},setRowEvent:function(a,b){b?rowEventsDT[b]=a:rowEvents=a,$(".datatable").each(function(){addRowEvent($(this))})},init:function(){function a(a,b){var c=$(a.form).find("table[id]").attr("id");a=$(a),a.off("click"),a.on("click",function(){c&&(b.all?b.or?DataTable.staticSearchAll(c,!0):DataTable.staticSearchAll(c):b.or?DataTable.staticSearch(c,!0):DataTable.staticSearch(c))})}$(".pagego").hover(function(){$(this).addClass("pageGoHover")},function(){$(this).removeClass("pageGoHover")}),$(".datatable").find("tr:eq(1)").css("visibility","hidden"),$(".easydatatable").each(function(){var a=$(this).attr("id");cacheInit[a]||a&&DataTable.load(a)}),$("[check]").on("click",function(){DataTable.checkAll(this,$(this).attr("check"))}),$(".data_search").each(function(){var a=$(this.form).find("table[id]").attr("id"),b=$(this);b.off("click"),b.on("click",function(){a&&DataTable.load(a)})}),$(".data_static_search").each(function(){a(this,{})}),$(".data_static_search_or").each(function(){a(this,{or:!0})}),$(".data_static_searchAll").each(function(){a(this,{all:!0})}),$(".data_static_searchAll_or").each(function(){a(this,{or:!0,all:!0})}),dtSort()}};window.DataTable=DataTable}(window); -------------------------------------------------------------------------------- /easydatatable/1.X/easy.datatable-1.11.0.js: -------------------------------------------------------------------------------- 1 | /** 2 | * jQuery EasyDataTable Plugin 3 | * 4 | * Version 1.11.0 5 | * 6 | * http://easyproject.cn 7 | * https://github.com/ushelp/EasyDataTable 8 | * 9 | * Copyright 2014 Ray [ inthinkcolor@gmail.com ] 10 | * 11 | * Dependencies: jQuery 12 | * 13 | */ 14 | (function(window) { 15 | var cacheData = {}, cacheDataRow = {}, cacheThLength = {}, cachePageTheme = {}, cacheLanguage = {}, cacheOrderArrow = {}, cacheInitLoading = {}, cacheStartFun = {}, cacheEndFun = {}, cacheUserPage = {}, cacheInit = {}, cacheDefaultRow = {},order_default="↑↓",order_up="↑",order_down="↓",orderCache={}, rowEvents={}, rowEventsDT={},cacheLoadDefault = {}, cacheSizeArray = {}, innerLoad = function(tableid, easydataParams, jsonData) { 16 | var nowDataTable = $("[id='" + tableid + "']"); 17 | if (nowDataTable.length == 0) { 18 | return; 19 | } 20 | easydataParams = easydataParams == undefined ? {} :easydataParams; 21 | var dataForm = $("form").has(nowDataTable); 22 | var pagenoEle = dataForm.find("[name='pageNo']"); 23 | var rowperpageEle = dataForm.find("[name='rowPerPage']"); 24 | if (!Validate.integer.test(pagenoEle.val())) { 25 | pagenoEle.val(1); 26 | } 27 | if (!Validate.integer.test(rowperpageEle.val())) { 28 | rowperpageEle.val(this.default_row); 29 | } 30 | if (!cacheInit[tableid]) { 31 | cacheInit[tableid] = false; 32 | if (easydataParams.start) { 33 | cacheStartFun[tableid] = easydataParams.start; 34 | } 35 | if (easydataParams.end) { 36 | cacheEndFun[tableid] = easydataParams.end; 37 | } 38 | var defRow = DataTable.default_row; 39 | if (Validate.integer.test(easydataParams.row)) { 40 | defRow = easydataParams.row; 41 | } else { 42 | var defRow = dataForm.find(".panelBar").attr("row"); 43 | if (!Validate.integer.test(defRow)) { 44 | defRow = DataTable.default_row; 45 | } 46 | } 47 | cacheDefaultRow[tableid] = defRow + ""; 48 | var initPage = ""; 49 | dataForm.append(initPage); 50 | } else { 51 | dataForm.find(".panelBar [id='datatable_pagenum']").html(pageNumSpan(tableid, pagenoEle.val(), cacheData[tableid]["totalCount"])); 52 | } 53 | if (cacheStartFun[tableid]) { 54 | try { 55 | cacheStartFun[tableid](nowDataTable[0], !cacheInit[tableid]); 56 | } catch (e) {} 57 | } 58 | if (!(easydataParams.pagetheme == undefined)) { 59 | cachePageTheme[tableid] = easydataParams.pagetheme; 60 | } 61 | if (!cachePageTheme[tableid]) { 62 | var usetheme = dataForm.find(".panelBar").attr("pagetheme"); 63 | if (usetheme) { 64 | cachePageTheme[tableid] = usetheme; 65 | } else { 66 | cachePageTheme[tableid] = DataTable.FULL_PAGE; 67 | } 68 | if (!cacheInit[tableid]) { 69 | cacheUserPage[tableid] = dataForm.find(".panelBar").html(); 70 | if (cacheUserPage[tableid]) { 71 | cacheUserPage[tableid] = cacheUserPage[tableid].replace(/\n/g, "").replace(/\r/g, "").replace("}%", "}%\r\n"); 72 | } 73 | dataForm.find(".panelBar").html(""); 74 | } 75 | } 76 | if (!cacheDataRow[tableid]) { 77 | var dataRow = ("" + nowDataTable.find(" tr:eq(1)").html() + "").replace(/\n/g, "").replace(/\r/g, "").replace("}%", "}%\r\n"); 78 | cacheDataRow[tableid] = dataRow; 79 | nowDataTable.find(" tr:eq(1)").find("td").css("border", "0"); 80 | nowDataTable.find(" tr:eq(1)").css("border", "0"); 81 | } 82 | if (cacheLoadDefault[tableid] == undefined) { 83 | var table_loading_attr = nowDataTable.attr("loading"); 84 | if (table_loading_attr) { 85 | cacheLoadDefault[tableid] = table_loading_attr; 86 | } else { 87 | cacheLoadDefault[tableid] = DataTable.loading_show; 88 | } 89 | if (!(easydataParams.loading == undefined)) { 90 | cacheLoadDefault[tableid] = easydataParams.loading + ""; 91 | } 92 | } 93 | postParam = dataForm.serialize(); 94 | loadShow(tableid, nowDataTable); 95 | if (easydataParams.language) { 96 | cacheLanguage[tableid] = easydataParams.language; 97 | } 98 | if (cacheLanguage[tableid] == undefined) { 99 | cacheLanguage[tableid] = DataTable.default_lang; 100 | } 101 | $.post(dataForm.attr("action"), postParam, function(data) { 102 | if (typeof data == "string") { 103 | data = eval("(" + data + ")"); 104 | } 105 | cacheData[tableid] = data; 106 | dataShow(tableid, nowDataTable, dataForm, data); 107 | if (cacheEndFun[tableid]) { 108 | try { 109 | cacheEndFun[tableid](nowDataTable[0], !cacheInit[tableid]); 110 | } catch (e) {} 111 | } 112 | if (!cacheInit[tableid]) { 113 | cacheInit[tableid] = true; 114 | $("#datatable_initPageData").remove(); 115 | } 116 | }); 117 | }, entityMap = { 118 | unescape:{ 119 | "&":"&", 120 | "<":"<", 121 | ">":">", 122 | """:'"', 123 | "'":"'" 124 | } 125 | }, entityRegexes = { 126 | unescape:new RegExp("(" + [ "&", "<", ">", """, "'" ].join("|") + ")", "g") 127 | }, unescape = function(string) { 128 | if (string == null) return ""; 129 | return ("" + string).replace(entityRegexes["unescape"], function(match) { 130 | return entityMap["unescape"][match]; 131 | }); 132 | }, formatContent = function(content, jsondata) { 133 | content = unescape(content); 134 | var reg = /\{([^}]+)\}/g; 135 | var regExp = /\%\{(.*)\}\%/g; 136 | var arrExp = /\[([0-9]+)\]/g; 137 | content = content.replace(regExp, function(m, i) { 138 | with (jsondata) { 139 | try { 140 | try { 141 | var res = eval($.trim(i).replace(arrExp, function(n, j) { 142 | return jsondata[j]; 143 | })); 144 | return res == undefined ? "" :res; 145 | } catch (e) { 146 | return m; 147 | } 148 | } catch (e) { 149 | return m; 150 | } 151 | } 152 | }); 153 | content = content.replace(reg, function(m, i) { 154 | with (jsondata) { 155 | try { 156 | var res; 157 | if ((i + "").indexOf(".") != -1) { 158 | res = jsondata[i]; 159 | } 160 | if (res) { 161 | return res; 162 | } 163 | if (/\[([0-9]+)\]/.test(i)) { 164 | return jsondata[i.substring(1, i.length - 1)]; 165 | } 166 | return eval($.trim(i)) == null ? "" :eval($.trim(i)); 167 | } catch (e) { 168 | return ""; 169 | } 170 | } 171 | }); 172 | return content; 173 | }, clone = function(o) { 174 | if (o == null || o == undefined) { 175 | return o; 176 | } 177 | var o2 = o.constructor === Array ? [] :{}; 178 | for (var i in o) { 179 | o2[i] = typeof o[i] == "object" ? clone(o[i]) :o[i]; 180 | } 181 | return o2; 182 | }, getPostParam = function(postParam) { 183 | var params = {}; 184 | var exclued_params = "#maxPage#rowPerPage#datatableIndex#datatableCount#pageNo#totalCount#order#sort#".toLowerCase(); 185 | for (var i in postParam) { 186 | if (exclued_params.indexOf("#" + postParam[i].name.toLowerCase() + "#") == -1) { 187 | params[postParam[i].name] = postParam[i].value.replace(/(^\s+)|(\s+$)/g, ""); 188 | } 189 | } 190 | return params; 191 | }, loadShow = function(tableid, nowDataTable) { 192 | if (cacheLoadDefault[tableid]) { 193 | var loading_type = cacheLoadDefault[tableid].toLowerCase(); 194 | if (loading_type == "default") { 195 | if (cacheInitLoading[tableid] == undefined) { 196 | nowDataTable.find(" tr:gt(0)").remove(); 197 | cacheInitLoading[tableid] = "loaded"; 198 | } 199 | nowDataTable.find(" tr:gt(0)").find("*").on("click", function() { 200 | return false; 201 | }); 202 | nowDataTable.find(" tr:gt(0)").find("*").css("color", "gray"); 203 | } else if (loading_type == "none") { 204 | if (cacheInitLoading[tableid] == undefined) { 205 | nowDataTable.find(" tr:gt(0)").remove(); 206 | cacheInitLoading[tableid] = "loaded"; 207 | } 208 | nowDataTable.find("tr:gt(0)").hide(); 209 | } else if (loading_type == "hide") { 210 | if (cacheInitLoading[tableid] == undefined) { 211 | nowDataTable.find(" tr:gt(0)").remove(); 212 | cacheInitLoading[tableid] = "loaded"; 213 | } 214 | nowDataTable.find("tr:gt(0)").css("visibility", "hidden"); 215 | } else if (loading_type == "show") { 216 | nowDataTable.find(" tr:gt(0)").remove(); 217 | $("[id='" + tableid + "_loading_div']").hide(); 218 | nowDataTable.after("
" + DataTable.loading_msg + "
"); 219 | } else { 220 | nowDataTable.find(" tr:gt(0)").remove(); 221 | $("[id='" + tableid + "_loading_div']").hide(); 222 | nowDataTable.after("
" + cacheLoadDefault[tableid] + "
"); 223 | } 224 | } 225 | }, initDataAndContent = function(tableid, nowDataTable, dataForm, data) { 226 | var content = ""; 227 | var j = 0; 228 | var valueObject = nowDataTable.attr("value"); 229 | var dataTableOrder = ""; 230 | var dataTableSort = ""; 231 | if (valueObject) { 232 | dataTableOrder = data[valueObject].order; 233 | dataTableSort = data[valueObject].sort; 234 | if (!dataTableOrder) { 235 | dataTableOrder = data.order; 236 | } 237 | if (!dataTableSort) { 238 | dataTableSort = data.sort; 239 | } 240 | if (!dataTableOrder) { 241 | dataTableOrder = ""; 242 | } 243 | if (!dataTableSort) { 244 | dataTableSort = ""; 245 | } 246 | cacheData[tableid].pageNo = parseInt(data[valueObject].pageNo); 247 | cacheData[tableid].rowPerPage = parseInt(data[valueObject].rowPerPage); 248 | cacheData[tableid].totalCount = parseInt(data[valueObject].totalCount); 249 | cacheData[tableid].order = dataTableOrder; 250 | cacheData[tableid].sort = dataTableSort; 251 | cacheData[tableid].maxPage = Math.floor((cacheData[tableid].totalCount - 1) / cacheData[tableid].rowPerPage + 1); 252 | var filterData = data[valueObject].data; 253 | for (var i in filterData) { 254 | filterData[i].datatableCount = parseInt(j) + 1; 255 | filterData[i].datatableIndex = parseInt(j); 256 | for (var property in data) { 257 | if (property != valueObject) { 258 | filterData[i][property] = data[property]; 259 | } 260 | } 261 | filterData[i].pageNo = parseInt(data[valueObject].pageNo); 262 | filterData[i].rowPerPage = parseInt(data[valueObject].rowPerPage); 263 | filterData[i].totalCount = parseInt(data[valueObject].totalCount); 264 | filterData[i].maxPage = Math.floor((parseInt(filterData[i].totalCount) - 1) / parseInt(filterData[i].rowPerPage) + 1); 265 | filterData[i].key = i; 266 | filterData[i].order = dataTableOrder; 267 | filterData[i].sort = dataTableSort; 268 | content += formatContent(cacheDataRow[tableid], filterData[i]); 269 | j++; 270 | } 271 | } else { 272 | dataTableOrder = data.order; 273 | dataTableSort = data.sort; 274 | if (!dataTableOrder) { 275 | dataTableOrder = ""; 276 | } 277 | if (!dataTableSort) { 278 | dataTableSort = ""; 279 | } 280 | cacheData[tableid].maxPage = Math.floor((parseInt(data.totalCount) - 1) / parseInt(data.rowPerPage) + 1); 281 | var filterData = data.data; 282 | for (var i in filterData) { 283 | for (var property in data) { 284 | if (property != "data") { 285 | filterData[i][property] = data[property]; 286 | } 287 | } 288 | filterData[i].datatableCount = parseInt(j) + 1; 289 | filterData[i].datatableIndex = parseInt(j); 290 | filterData[i].key = i; 291 | filterData[i].maxPage = Math.floor((parseInt(filterData[i].totalCount) - 1) / parseInt(filterData[i].rowPerPage) + 1); 292 | filterData[i].order = dataTableOrder; 293 | filterData[i].sort = dataTableSort; 294 | content += formatContent(cacheDataRow[tableid], filterData[i]); 295 | j++; 296 | } 297 | } 298 | dataForm.find(" .pages .totalCount").html(j); 299 | return { 300 | content:content, 301 | dataTableOrder:dataTableOrder, 302 | dataTableSort:dataTableSort 303 | }; 304 | }, dataShow = function(tableid, nowDataTable, dataForm, data) { 305 | var res = initDataAndContent(tableid, nowDataTable, dataForm, data); 306 | pageTheme(tableid, cachePageTheme[tableid]); 307 | dataForm.find(" .pages .totalCount").html(data["totalCount"]); 308 | dataForm.find(" .mycombox").val(data["rowPerPage"]); 309 | dataForm.find(" [name='pageNo']").val(data["pageNo"]); 310 | dataForm.find(" .pages .maxPage").html(Math.floor((parseInt(data["totalCount"]) - 1) / parseInt(data["rowPerPage"]) + 1)); 311 | dataForm.find("[name='rowPerPage']").off("change"); 312 | dataForm.find("[name='rowPerPage']").on("change", function(e) { 313 | var row = $(this).val(); 314 | var pagenoEle = dataForm.find("[name='pageNo']"); 315 | var maxPage = Math.floor((cacheData[tableid]["totalCount"] - 1) / row + 1); 316 | if (pagenoEle.val() > maxPage) { 317 | pagenoEle.val(maxPage); 318 | } 319 | DataTable.load(tableid); 320 | }); 321 | pageCheck(tableid); 322 | var orderInfo = '" + ""; 323 | res.content += orderInfo; 324 | nowDataTable.find(" tr:gt(0)").remove(); 325 | $("[id='" + tableid + "_loading_div']").remove(); 326 | nowDataTable.append(res.content); 327 | // 表格效果事件 328 | addRowEvent(nowDataTable); 329 | }, dataObject = function(k, v) { 330 | this.k = k; 331 | this.v = v; 332 | }, dataSort = function(data, dataTableSort, dataTableOrder) { 333 | var l = true; 334 | if (!$.isArray(data)) { 335 | l = false; 336 | } 337 | var a = new Array(); 338 | for (var i in data) { 339 | a.push(new dataObject(i, data[i])); 340 | } 341 | if (/\[([0-9]+)\]/.test(dataTableSort)) { 342 | dataTableSort = dataTableSort.substring(1, dataTableSort.length - 1); 343 | } 344 | a.sort(function(x, y) { 345 | if (dataTableSort.toLowerCase() == "key") { 346 | if (x.k == y.k) { 347 | return 0; 348 | } 349 | if (dataTableOrder.toLowerCase() == "asc") { 350 | if (x.k > y.k) { 351 | return 1; 352 | } else { 353 | return -1; 354 | } 355 | } else { 356 | if (y.k > x.k) { 357 | return 1; 358 | } else { 359 | return -1; 360 | } 361 | } 362 | } else { 363 | if (x.v[dataTableSort] == y.v[dataTableSort]) { 364 | return 0; 365 | } 366 | if (dataTableOrder.toLowerCase() == "asc") { 367 | if (x.v[dataTableSort] > y.v[dataTableSort]) { 368 | return 1; 369 | } else { 370 | return -1; 371 | } 372 | } else { 373 | if (y.v[dataTableSort] > x.v[dataTableSort]) { 374 | return 1; 375 | } else { 376 | return -1; 377 | } 378 | } 379 | } 380 | }); 381 | var b = []; 382 | if (l) { 383 | var j = 0; 384 | for (var i = 0; i < a.length; i++) { 385 | b[j] = a[i].v; 386 | j++; 387 | } 388 | } else { 389 | for (var i = 0; i < a.length; i++) { 390 | b[a[i].k] = a[i].v; 391 | } 392 | } 393 | return b; 394 | }, Validate = { 395 | integer:/^[1-9][0-9]*$/ 396 | }, firstDisable = function(tableid, first, prev) { 397 | if (!first) { 398 | var dataForm = $("form").has("[id='" + tableid + "']"); 399 | first = dataForm.find("[name='first']"); 400 | prev = dataForm.find("[name='prev']"); 401 | } 402 | first.off("click"); 403 | prev.off("click"); 404 | first.removeClass("pageGoHover"); 405 | prev.removeClass("pageGoHover"); 406 | first.addClass("firstlastgo"); 407 | prev.addClass("firstlastgo"); 408 | first.unbind("mouseenter").unbind("mouseleave"); 409 | prev.unbind("mouseenter").unbind("mouseleave"); 410 | }, firstEnable = function(tableid, first, prev) { 411 | if (!first) { 412 | var dataForm = $("form").has("[id='" + tableid + "']"); 413 | first = dataForm.find("[name='first']"); 414 | prev = dataForm.find("[name='prev']"); 415 | } 416 | first.off("click"); 417 | prev.off("click"); 418 | first.on("click", function() { 419 | DataTable.first(tableid); 420 | }); 421 | prev.on("click", function() { 422 | DataTable.prev(tableid); 423 | }); 424 | first.unbind("mouseenter").unbind("mouseleave"); 425 | prev.unbind("mouseenter").unbind("mouseleave"); 426 | first.removeClass("firstlastgo"); 427 | prev.removeClass("firstlastgo"); 428 | }, lastDisable = function(tableid, last, next) { 429 | if (!last) { 430 | var dataForm = $("form").has("[id='" + tableid + "']"); 431 | last = dataForm.find("[name='last']"); 432 | next = dataForm.find("[name='next']"); 433 | } 434 | last.off("click"); 435 | next.off("click"); 436 | last.removeClass("pageGoHover"); 437 | next.removeClass("pageGoHover"); 438 | last.addClass("firstlastgo"); 439 | next.addClass("firstlastgo"); 440 | last.unbind("mouseenter").unbind("mouseleave"); 441 | next.unbind("mouseenter").unbind("mouseleave"); 442 | }, lastEnable = function(tableid, last, next) { 443 | if (!last) { 444 | var dataForm = $("form").has("[id='" + tableid + "']"); 445 | last = dataForm.find("[name='last']"); 446 | next = dataForm.find("[name='next']"); 447 | } 448 | next.off("click"); 449 | last.off("click"); 450 | next.on("click", function() { 451 | DataTable.next(tableid); 452 | }); 453 | last.on("click", function() { 454 | DataTable.last(tableid); 455 | }); 456 | next.unbind("mouseenter").unbind("mouseleave"); 457 | last.unbind("mouseenter").unbind("mouseleave"); 458 | next.removeClass("firstlastgo"); 459 | last.removeClass("firstlastgo"); 460 | }, pageCheck = function(tableid) { 461 | var dataForm = $("form").has("[id='" + tableid + "']"); 462 | var maxPage = cacheData[tableid]["maxPage"]; 463 | var nowPage = parseInt(cacheData[tableid]["pageNo"]); 464 | var first = dataForm.find("[name='first']"); 465 | var prev = dataForm.find("[name='prev']"); 466 | var next = dataForm.find("[name='next']"); 467 | var last = dataForm.find("[name='last']"); 468 | var pagegoto = dataForm.find("[name='pagegoto']"); 469 | var numgoto = dataForm.find("[name='numgoto']"); 470 | firstEnable(tableid, first, prev); 471 | lastEnable(tableid, last, next); 472 | pagegoto.off("click"); 473 | numgoto.off("click"); 474 | pagegoto.on("click", function() { 475 | DataTable.gopage(tableid); 476 | }); 477 | numgoto.on("click", function(e) { 478 | DataTable.numgoto(tableid, e); 479 | }); 480 | next.removeClass("firstlastgo"); 481 | last.removeClass("firstlastgo"); 482 | loadInit(); 483 | if (nowPage <= 1) { 484 | firstDisable(tableid, first, prev); 485 | } 486 | if (nowPage >= maxPage) { 487 | lastDisable(tableid, last, next); 488 | } 489 | }, pageMsgCkeck = function(tableid) { 490 | if (!cacheLanguage[tableid].first) { 491 | cacheLanguage[tableid].first = DataTable.default_lang.first; 492 | } 493 | if (!cacheLanguage[tableid].previous) { 494 | cacheLanguage[tableid].previous = DataTable.default_lang.previous; 495 | } 496 | if (!cacheLanguage[tableid].next) { 497 | cacheLanguage[tableid].next = DataTable.default_lang.next; 498 | } 499 | if (!cacheLanguage[tableid].last) { 500 | cacheLanguage[tableid].last = DataTable.default_lang.last; 501 | } 502 | if (!cacheLanguage[tableid].totalPage) { 503 | cacheLanguage[tableid].totalPage = DataTable.default_lang.totalPage; 504 | } 505 | if (!cacheLanguage[tableid].rowPerPage) { 506 | cacheLanguage[tableid].rowPerPage = DataTable.default_lang.rowPerPage; 507 | } 508 | if (!cacheLanguage[tableid].totalCount) { 509 | cacheLanguage[tableid].totalCount = DataTable.default_lang.totalCount; 510 | } 511 | }, pageNumSpan = function(tableid, nowPage, totalCount) { 512 | nowPage = parseInt(nowPage); 513 | var maxPage = Math.floor((parseInt(totalCount) - 1) / parseInt(cacheData[tableid]["rowPerPage"]) + 1); 514 | var pageStart = nowPage - 3; 515 | var pageEnd = nowPage + 3; 516 | if (pageStart < 1) { 517 | pageStart = 1; 518 | pageEnd = pageStart + 6; 519 | if (pageEnd > maxPage) { 520 | pageEnd = maxPage; 521 | } 522 | } 523 | if (pageEnd > maxPage) { 524 | pageEnd = maxPage; 525 | pageStart = pageEnd - 6; 526 | if (pageStart < 1) { 527 | pageStart = 1; 528 | } 529 | } 530 | var pageNum = ""; 531 | for (var i = pageStart; i <= pageEnd; i++) { 532 | if (i == nowPage) { 533 | pageNum += '' + i + ""; 534 | } else { 535 | pageNum += '' + i + ""; 536 | } 537 | } 538 | return pageNum; 539 | }, pageTheme = function(tableid, theme) { 540 | var dataForm = $("form").has("[id='" + tableid + "']"); 541 | var content = ""; 542 | if (theme && theme.toLowerCase() == "no") { 543 | content = cacheUserPage[tableid]; 544 | } else { 545 | var pageshowCount = dataForm.find(".panelBar").length; 546 | if (pageshowCount != 0) { 547 | var sizeArray = cacheSizeArray[tableid]; 548 | if (!sizeArray) { 549 | var sizes = dataForm.find(".panelBar").attr("size"); 550 | var sizeArray = [ cacheData[tableid].rowPerPage ]; 551 | if (sizes) { 552 | sizeArray = sizes.split(","); 553 | } 554 | if (cacheDefaultRow[tableid]) { 555 | var sa = "#" + sizeArray.join("#") + "#"; 556 | if (sa.indexOf("#" + cacheDefaultRow[tableid] + "#") != -1) { 557 | cacheDefaultRow[tableid] = null; 558 | } else { 559 | sizeArray.push(cacheDefaultRow[tableid]); 560 | } 561 | } 562 | sizeArray.sort(function(i, j) { 563 | return parseInt(i) - parseInt(j); 564 | }); 565 | cacheSizeArray[tableid] = sizeArray; 566 | } 567 | pageMsgCkeck(tableid); 568 | var rowPerPageIndex = cacheLanguage[tableid].rowPerPage.indexOf("{0}"); 569 | var rowPerPageStart = cacheLanguage[tableid].rowPerPage.substring(0, rowPerPageIndex); 570 | var rowPerPageEnd = cacheLanguage[tableid].rowPerPage.substring(rowPerPageIndex + 3); 571 | var rowNumSpan = '
' + rowPerPageStart + "" + '" + rowPerPageEnd + ","; 576 | var totalPageIndex = cacheLanguage[tableid].totalPage.indexOf("{0}"); 577 | var totalPageStart = cacheLanguage[tableid].totalPage.substring(0, totalPageIndex); 578 | var totalPageEnd = cacheLanguage[tableid].totalPage.substring(totalPageIndex + 3); 579 | var totalCountIndex = cacheLanguage[tableid].totalCount.indexOf("{0}"); 580 | var totalCountStart = cacheLanguage[tableid].totalCount.substring(0, totalCountIndex); 581 | var totalCountEnd = cacheLanguage[tableid].totalCount.substring(totalCountIndex + 3); 582 | rowNumSpan += totalCountStart + '' + totalCountEnd + "
"; 583 | var start = '
'; 584 | var totalPageSpan = '' + totalPageStart + '' + totalPageEnd + ""; 585 | var back = '' + cacheLanguage[tableid].first + "" + '' + cacheLanguage[tableid].previous + ""; 586 | var pageNum = "" + pageNumSpan(tableid, cacheData[tableid]["pageNo"], cacheData[tableid]["totalCount"]) + ""; 587 | var forward = '' + cacheLanguage[tableid].next + "" + '' + cacheLanguage[tableid].last + ""; 588 | var pagegotoSpan = ''; 589 | pagegotoSpan += '>>'; 590 | var end = "
"; 591 | if (!theme || theme.toUpperCase() == "FULL") { 592 | content = rowNumSpan + start + totalPageSpan + back + pageNum + forward + pagegotoSpan + end; 593 | } else if (theme.toUpperCase() == "SIMPLE") { 594 | content = rowNumSpan + start + totalPageSpan + back + forward + pagegotoSpan + end; 595 | } else { 596 | content = rowNumSpan + start + totalPageSpan + back + pageNum + forward + pagegotoSpan + end; 597 | } 598 | } 599 | } 600 | dataForm.find(".panelBar").html(formatContent(content, cacheData[tableid])); 601 | dataForm.find(".panelBar .customPaging").show(); 602 | }, loadInit = function() { 603 | $(".pagego").hover(function() { 604 | $(this).addClass("pageGoHover"); 605 | }, function() { 606 | $(this).removeClass("pageGoHover"); 607 | }); 608 | }, pageRangeChk = function(tableid) { 609 | var dataForm = $("form").has("[id='" + tableid + "']"); 610 | var pagenoEle = dataForm.find("[name='pageNo']"); 611 | var row = dataForm.find("[name='rowPerPage']").val(); 612 | var maxPage = Math.floor((cacheData[tableid]["totalCount"] - 1) / row + 1); 613 | if (pagenoEle.val() > maxPage) { 614 | pagenoEle.val(maxPage); 615 | } 616 | }, fldeChk = function(tableid, nowpage) { 617 | firstEnable(tableid); 618 | lastEnable(tableid); 619 | if (nowpage <= 1) { 620 | firstDisable(tableid); 621 | if (cacheData[tableid]["maxPage"] > 1) { 622 | lastEnable(tableid); 623 | } 624 | } 625 | if (nowpage >= cacheData[tableid]["maxPage"]) { 626 | lastDisable(tableid); 627 | if (cacheData[tableid]["maxPage"] > 1) { 628 | firstEnable(tableid); 629 | } 630 | } 631 | }, 632 | //渲染页面的排序指示符号 633 | dtSort=function(){ 634 | $("table:has([sort]),table:has([staticSort])") 635 | .each(function() { 636 | var table = $(this); 637 | var tableid = table.attr("id"); 638 | table.find("[sort],[staticSort]").each( 639 | function() { 640 | var o = $(this); 641 | var oDef=order_default; 642 | var oU=order_up; 643 | var oD=order_down; 644 | 645 | var oSel; 646 | if(orderCache){ 647 | $.each(orderCache,function(k,v){ 648 | var k2=","+k.toLowerCase()+","; 649 | tableidTmp=","+tableid.toLowerCase()+","; 650 | 651 | if(k2.indexOf(tableidTmp)!=-1){ 652 | oSel=true; 653 | } 654 | if(oSel){ 655 | orderCache[k].order_default?oDef=orderCache[k].order_default:""; 656 | orderCache[k].order_up?oU=orderCache[k].order_up:""; 657 | orderCache[k].order_down?oD=orderCache[k].order_down:""; 658 | return; 659 | } 660 | }); 661 | } 662 | var sortHtml; 663 | if(o.find("span.sortArrow").length>0){ 664 | sortHtml=o.html().replace(o.find("span.sortArrow").html(),oDef); 665 | }else{ 666 | sortHtml=o.html()+ ""+oDef+""; 667 | } 668 | o.html(sortHtml); 669 | o.css("cursor", "pointer"); 670 | o.off("click"); 671 | var dataForm = $("form").has( 672 | "[id='" + tableid 673 | + "']"); 674 | o.on("click",function(e) { 675 | var sort = o.attr("sort")|| o.attr("staticSort"); 676 | 677 | if (dataForm 678 | .find("input[name='sort']").length > 0) { 679 | dataForm.find("input[name='sort']").val(sort); 680 | 681 | dataForm.find("input[name='order']") 682 | .val( 683 | dataForm 684 | .find( 685 | "input[name='order']") 686 | .val() 687 | .toLowerCase() == "asc" ? "desc" 688 | : "asc"); 689 | 690 | 691 | var arrowObj = $( 692 | this) 693 | .find( 694 | "[name='orderspan']"); 695 | if (cacheOrderArrow[tableid]) { 696 | cacheOrderArrow[tableid] 697 | .html(oDef); 698 | } 699 | if (dataForm 700 | .find( 701 | "input[name='order']") 702 | .val() == "asc") { 703 | arrowObj 704 | .html(oU); 705 | } else if (dataForm 706 | .find( 707 | "input[name='order']") 708 | .val() == "desc") { 709 | arrowObj 710 | .html(oD); 711 | } else { 712 | arrowObj 713 | .html(oDef); 714 | } 715 | cacheOrderArrow[tableid] = arrowObj; 716 | if (o.attr("sort")) { 717 | 718 | DataTable.load(tableid); 719 | } else { 720 | DataTable 721 | .staticDataSort( 722 | tableid, 723 | sort, 724 | dataForm 725 | .find( 726 | "input[name='order']") 727 | .val()); 728 | } 729 | } 730 | 731 | }); 732 | }); 733 | table.find("[sort],[staticSort]").hover( 734 | function() { 735 | var arrowObj = $(this).find( 736 | "[name='orderspan']"); 737 | arrowObj.removeClass("sortArrow"); 738 | arrowObj.removeClass("sortArrowDown"); 739 | arrowObj.addClass("sortArrowHover"); 740 | }, 741 | function() { 742 | var arrowObj = $(this).find( 743 | "[name='orderspan']"); 744 | arrowObj.removeClass("sortArrowHover"); 745 | arrowObj.addClass("sortArrow"); 746 | }); 747 | table.find("[sort],[staticSort]").on( 748 | "mousedown", 749 | function() { 750 | var arrowObj = $(this).find( 751 | "[name='orderspan']"); 752 | arrowObj.removeClass("sortArrowHover"); 753 | arrowObj.addClass("sortArrowDown"); 754 | }); 755 | table.find("[sort],[staticSort]").on( 756 | "mouseup", 757 | function() { 758 | var arrowObj = $(this).find( 759 | "[name='orderspan']"); 760 | arrowObj.removeClass("sortArrowDown"); 761 | arrowObj.addClass("sortArrowHover"); 762 | }); 763 | }); 764 | }, 765 | //表格效果事件 766 | addRowEvent=function(nowDataTable){ 767 | nowDataTable.find(" tr:even").addClass("evenColor"); 768 | nowDataTable.find(" tr").hover(function() { 769 | $(this).addClass("trHover"); 770 | }, function() { 771 | $(this).removeClass("trHover"); 772 | }); 773 | var oldTr; 774 | nowDataTable.find(" tr").on("click", function() { 775 | if($(this).hasClass("trClick")){ 776 | $(this).removeClass("trClick"); 777 | oldTr=null; 778 | }else{ 779 | if (oldTr) { 780 | oldTr.removeClass("trClick"); 781 | } 782 | 783 | $(this).addClass("trClick"); 784 | oldTr = $(this); 785 | } 786 | }); 787 | var tableid=nowDataTable.attr("id"); 788 | 789 | if(rowEventsDT[tableid]){ 790 | $.each(rowEventsDT[tableid],function(eventName,fn){ 791 | nowDataTable.find(" tr").on(eventName,fn); 792 | }); 793 | }else{ 794 | if(rowEvents){ 795 | $.each(rowEvents,function(eventName,fn){ 796 | nowDataTable.find(" tr").on(eventName,fn); 797 | }); 798 | } 799 | 800 | } 801 | 802 | } 803 | ; 804 | 805 | var DataTable = { 806 | default_row:5, 807 | default_matchMode:"like_i", 808 | loading_show:"default", 809 | order_default:"↑↓", 810 | order_up:"↑", 811 | order_down:"↓", 812 | sort:{}, 813 | loading_msg:"Data is loading ......", 814 | default_lang:{ 815 | first : "first", 816 | previous : "previous", 817 | next : "next", 818 | last : "last", 819 | totalCount : "total {0} rows", 820 | totalPage : "total {0} pages", 821 | rowPerPage : "page for {0} rows" 822 | }, 823 | load:function(tableid, easydataParams) { 824 | innerLoad(tableid, easydataParams); 825 | }, 826 | resetOrder:function(tableid) { 827 | var dataForm = $("form").has("[id='" + tableid + "']"); 828 | dataForm.find("[name='order']").val(""); 829 | dataForm.find("[name='sort']").val(""); 830 | if (cacheOrderArrow[tableid]) { 831 | cacheOrderArrow[tableid].html("↑↓"); 832 | } 833 | }, 834 | reload:function(tableid) { 835 | DataTable.resetOrder(tableid); 836 | DataTable.load(tableid); 837 | }, 838 | out:function(msg) { 839 | return msg; 840 | }, 841 | first:function(tableid) { 842 | var dataForm = $("form").has("[id='" + tableid + "']"); 843 | var pagenoEle = dataForm.find("[name='pageNo']"); 844 | pagenoEle.val(1); 845 | fldeChk(tableid, 1); 846 | this.load(tableid); 847 | }, 848 | prev:function(tableid) { 849 | var dataForm = $("form").has("[id='" + tableid + "']"); 850 | var pagenoEle = dataForm.find("[name='pageNo']"); 851 | pagenoEle.val(parseInt(cacheData[tableid]["pageNo"]) - 1); 852 | fldeChk(tableid, pagenoEle.val()); 853 | this.load(tableid); 854 | }, 855 | next:function(tableid) { 856 | var dataForm = $("form").has("[id='" + tableid + "']"); 857 | var pagenoEle = dataForm.find("[name='pageNo']"); 858 | pagenoEle.val(parseInt(cacheData[tableid]["pageNo"]) + 1); 859 | fldeChk(tableid, pagenoEle.val()); 860 | this.load(tableid); 861 | }, 862 | last:function(tableid) { 863 | var dataForm = $("form").has("[id='" + tableid + "']"); 864 | var pagenoEle = dataForm.find("[name='pageNo']"); 865 | pagenoEle.val(cacheData[tableid]["maxPage"]); 866 | fldeChk(tableid, cacheData[tableid]["maxPage"]); 867 | this.load(tableid); 868 | }, 869 | gopage:function(tableid) { 870 | pageRangeChk(tableid); 871 | var dataForm = $("form").has("[id='" + tableid + "']"); 872 | var pagenoEle = dataForm.find("[name='pageNo']"); 873 | if (cacheData[tableid]["pageNo"] != pagenoEle.val() && Validate.integer.test(pagenoEle.val())) { 874 | fldeChk(tableid, pagenoEle.val()); 875 | this.load(tableid); 876 | } 877 | }, 878 | numgoto:function(tableid, e) { 879 | var dataForm = $("form").has("[id='" + tableid + "']"); 880 | var pagenoEle = dataForm.find("[name='pageNo']"); 881 | pagenoEle.val($(e.target).text()); 882 | fldeChk(tableid, pagenoEle.val()); 883 | this.load(tableid); 884 | }, 885 | go:function(tableid, pagenum, row) { 886 | var dataForm = $("form").has("[id='" + tableid + "']"); 887 | if (dataForm && Validate.integer.test(pagenum)) { 888 | pagenum = parseInt(pagenum); 889 | if (pagenum <= 0) { 890 | pagenum = 1; 891 | } 892 | if (!row || !Validate.integer.test(row)) { 893 | row = cacheData[tableid]["rowPerPage"]; 894 | } 895 | var maxPage = Math.floor((cacheData[tableid]["totalCount"] - 1) / row + 1); 896 | if (pagenum > maxPage) { 897 | pagenum = maxPage; 898 | } 899 | var pagenoEle = dataForm.find("[name='pageNo']"); 900 | if (pagenoEle.val()) { 901 | pagenoEle.val(pagenum); 902 | } else { 903 | dataForm.append(''); 904 | } 905 | var rowPerPageEle = dataForm.find("[name='rowPerPage']"); 906 | if (rowPerPageEle.val()) { 907 | rowPerPageEle.val(row); 908 | } else { 909 | dataForm.append(''); 910 | } 911 | dataForm.find("[name='rowPerPage']").val(row); 912 | if (cacheData[tableid]["pageNo"] != pagenum) { 913 | this.load(tableid); 914 | } 915 | } 916 | }, 917 | checkAll:function(o, name) { 918 | var cs = o.checked; 919 | if (cs) { 920 | $(o.form).find("[name='" + name + "']").each(function() { 921 | this.checked = true; 922 | }); 923 | } else { 924 | $(o.form).find("[name='" + name + "']").each(function() { 925 | this.checked = false; 926 | }); 927 | } 928 | }, 929 | setOrder: function(orderParams,datatableid){ 930 | if(datatableid){ 931 | orderCache[datatableid]={}; 932 | orderCache[datatableid].order_default=orderParams.order_default; 933 | orderCache[datatableid].order_up=orderParams.order_up; 934 | orderCache[datatableid].order_down=orderParams.order_down; 935 | }else{ 936 | order_default=orderParams.order_default; 937 | order_up=orderParams.order_up; 938 | order_down=orderParams.order_down; 939 | } 940 | 941 | dtSort(); 942 | }, 943 | /** 944 | * 为Datatable的行注册各种处理事件 945 | * @param events 注册的事件处理列表 946 | * @param datatableid 可选,将事件列表注册到id指定的DataTable 947 | */ 948 | setRowEvent: function(events, datatableid){ 949 | if(datatableid){ 950 | rowEventsDT[datatableid]=events; 951 | }else{ 952 | rowEvents=events; 953 | } 954 | 955 | $(".datatable").each(function(){ 956 | addRowEvent($(this)); 957 | }); 958 | 959 | }, 960 | init:function() { 961 | $(".pagego").hover(function() { 962 | $(this).addClass("pageGoHover"); 963 | }, function() { 964 | $(this).removeClass("pageGoHover"); 965 | }); 966 | $(".datatable").find("tr:eq(1)").css("visibility", "hidden"); 967 | $(".easydatatable").each(function() { 968 | var tableid = $(this).attr("id"); 969 | if (!cacheInit[tableid]) { 970 | if (tableid) { 971 | DataTable.load(tableid); 972 | } 973 | } 974 | }); 975 | $("[check]").on("click", function() { 976 | DataTable.checkAll(this, $(this).attr("check")); 977 | }); 978 | $(".data_search").each(function() { 979 | var tableid = $(this.form).find("table[id]").attr("id"); 980 | var o = $(this); 981 | o.off("click"); 982 | o.on("click", function() { 983 | if (tableid) { 984 | DataTable.load(tableid); 985 | } 986 | }); 987 | }); 988 | dtSort(); 989 | } 990 | }; 991 | window.DataTable = DataTable; 992 | })(window); -------------------------------------------------------------------------------- /easydatatable/easy.datatable-2.4.0.js: -------------------------------------------------------------------------------- 1 | /** 2 | * jQuery EasyDataTable Plugin 3 | * 4 | * Version 2.4.0 5 | * 6 | * http://easyproject.cn 7 | * https://github.com/ushelp/EasyDataTable 8 | * 9 | * Copyright 2014 Ray [ inthinkcolor@gmail.com ] 10 | * 11 | * Dependencies: jQuery 12 | * 13 | */ 14 | (function(window){ 15 | var cacheData={}, 16 | cacheDataRow={}, 17 | cacheThLength = {}, 18 | cachePageTheme = {}, 19 | cacheLanguage = {}, 20 | cacheOrderArrow = {}, 21 | cacheInitLoading = {}, 22 | cacheStartFun = {}, 23 | cacheEndFun = {}, 24 | cacheUserPage = {}, 25 | cacheInit = {}, 26 | cacheDefaultRow = {}, 27 | cacheInitStaticData={}, 28 | cacheStaticData = {}, 29 | cacheStaticTable = {}, 30 | cacheLoadDefault = {}, 31 | cacheSizeArray={}, 32 | order_default="↑↓", 33 | order_up="↑", 34 | order_down="↓", 35 | orderCache={},//按DataTableID自定义排序指示符 36 | rowEvents={}, 37 | rowEventsDT={}, 38 | /** 39 | * DataTable数据加载 40 | * @param tableid 数据表格id 41 | * @param easydataParams 初始化参数 42 | * @param jsonData 静态查询加载的数据 43 | * @param staticFlag 是否静态查询 44 | */ 45 | innerLoad=function(tableid, easydataParams, jsonData, staticFlag) { 46 | var nowDataTable = $("[id='" + tableid + "']"); 47 | if (nowDataTable.length == 0) { 48 | return; 49 | } 50 | easydataParams = easydataParams == undefined ? {} : easydataParams; 51 | var dataForm = $("form").has(nowDataTable); 52 | 53 | 54 | /* 55 | * 提交分页数据验证 56 | */ 57 | var pagenoEle = dataForm.find("[name='pageNo']"); 58 | var rowperpageEle = dataForm.find("[name='rowPerPage']"); 59 | if (!Validate.integer.test(pagenoEle.val())) { 60 | pagenoEle.val(1); 61 | } 62 | if (!Validate.integer.test(rowperpageEle.val())) { 63 | rowperpageEle.val(this.default_row); 64 | } 65 | 66 | // 初始化标识(未初始化) 67 | if (!cacheInit[tableid]) { 68 | cacheInit[tableid] = false; 69 | // 第一次加载,未初始化 70 | // 初始化时,start函数缓存 71 | if (easydataParams.start) { 72 | cacheStartFun[tableid] = easydataParams.start; 73 | } 74 | // 初始化时,end函数缓存 75 | if (easydataParams.end) { 76 | cacheEndFun[tableid] = easydataParams.end; 77 | } 78 | // 初始页和初始每页条数 79 | var defRow = DataTable.default_row; 80 | if (Validate.integer.test(easydataParams.row)) { 81 | defRow = easydataParams.row; 82 | } else { 83 | var defRow = dataForm.find(".panelBar").attr("row"); 84 | if (!Validate.integer.test(defRow)) { 85 | defRow = DataTable.default_row; 86 | } 87 | } 88 | 89 | cacheDefaultRow[tableid] = defRow + ""; 90 | var initPage = ""; 95 | dataForm.append(initPage); 96 | } else { 97 | // 如果分页页码不在当前分页列表 98 | // if(dataForm.find(".panelBar 99 | // [class~='pagego'][name='numgoto'][value='numgoto_"+pagenoEle.val()+"']").length==0){ 100 | 101 | dataForm.find(".panelBar [id='datatable_pagenum']").html( 102 | pageNumSpan(tableid, pagenoEle.val(), 103 | cacheData[tableid]["totalCount"])); 104 | // }else{ //如果存在 105 | // 先显示分页状态 106 | // dataForm.find(".panelBar 107 | // [class~='pagego'][name='numgoto'][class~='nowpagenum']").removeClass("nowpagenum"); 108 | // dataForm.find(".panelBar 109 | // [class~='pagego'][name='numgoto'][value='numgoto_"+pagenoEle.val()+"']").addClass("nowpagenum"); 110 | 111 | // } 112 | } 113 | 114 | // start函数调用,数据加载开始时执行 115 | if (cacheStartFun[tableid]) { 116 | try { 117 | // 数据表格,是否是第一次加载 118 | cacheStartFun[tableid](nowDataTable[0], 119 | !cacheInit[tableid]); 120 | } catch (e) { 121 | } 122 | } 123 | // 使用的分页主题 124 | if (!(easydataParams.pagetheme == undefined)) { 125 | cachePageTheme[tableid] = easydataParams.pagetheme; 126 | } 127 | if (!cachePageTheme[tableid]) { 128 | var usetheme = dataForm.find(".panelBar").attr("pagetheme"); 129 | if (usetheme) { 130 | cachePageTheme[tableid] = usetheme; 131 | } else { 132 | cachePageTheme[tableid] = DataTable.FULL_PAGE; 133 | } 134 | if (!cacheInit[tableid]) { 135 | // 初始化时保存自定义分页content 136 | cacheUserPage[tableid] = dataForm.find(".panelBar").html(); 137 | 138 | if(cacheUserPage[tableid]){ 139 | cacheUserPage[tableid]=cacheUserPage[tableid].replace(/\n/g, "").replace(/\r/g, "").replace("}%","}%\r\n"); 140 | } 141 | 142 | dataForm.find(".panelBar").html(""); 143 | } 144 | } 145 | 146 | if (!cacheDataRow[tableid]) { 147 | // 获取数据行 148 | var dataRow = ("" + nowDataTable.find(" tr:eq(1)").html() + "") 149 | .replace(/\n/g, "").replace(/\r/g, "").replace("}%", 150 | "}%\r\n"); 151 | cacheDataRow[tableid] = dataRow; 152 | nowDataTable.find(" tr:eq(1)").find("td").css("border", "0"); 153 | nowDataTable.find(" tr:eq(1)").css("border", "0"); 154 | } 155 | // 分页加载数据时表格的显示方式 156 | if (cacheLoadDefault[tableid] == undefined) { 157 | var table_loading_attr = nowDataTable.attr("loading"); 158 | if (table_loading_attr) { 159 | cacheLoadDefault[tableid] = table_loading_attr; 160 | } else { 161 | cacheLoadDefault[tableid] = DataTable.loading_show; 162 | } 163 | if (!(easydataParams.loading == undefined)) { 164 | cacheLoadDefault[tableid] = easydataParams.loading 165 | + ""; 166 | } 167 | } 168 | 169 | 170 | /* 171 | * 表单参数 172 | */ 173 | postParam = dataForm.serialize(); 174 | 175 | // 分页加载数据时,表格的显示方式,必须在表单参数获取完后 176 | loadShow(tableid, nowDataTable); 177 | if (easydataParams.language) { 178 | // 如果存在语言,则按照指定语言显示 179 | cacheLanguage[tableid] = easydataParams.language; 180 | } 181 | // 如果没有指定语言,则使用缓存语言 182 | if (cacheLanguage[tableid] == undefined) { 183 | cacheLanguage[tableid] = DataTable.default_lang; 184 | } 185 | 186 | 187 | if (staticFlag) { 188 | var data = jsonData; 189 | var valueObject = nowDataTable.attr("value"); 190 | if (valueObject) { 191 | 192 | if($.isArray(data[valueObject].data)){ 193 | data.totalCount = data[valueObject].data.length; 194 | data[valueObject].totalCount =data[valueObject].data.length; 195 | }else{ 196 | var j=0; 197 | for(var i in data[valueObject].data){ 198 | j++; 199 | } 200 | data.totalCount =j; 201 | data[valueObject].totalCount =j; 202 | } 203 | }else{ 204 | if($.isArray(data.data)){ 205 | data.totalCount = data.data.length; 206 | 207 | }else{ 208 | var j=0; 209 | for(var i in data.data){ 210 | j++; 211 | } 212 | 213 | data.totalCount =j; 214 | } 215 | 216 | } 217 | 218 | var rowPerPage=data.totalCount; 219 | 220 | if (valueObject) { 221 | if(jsonData.rowPerPage){ 222 | dataForm.find("[name='rowPerPage']").val(jsonData.rowPerPage); 223 | rowPerPage=jsonData.rowPerPage; 224 | }else if(jsonData[valueObject].rowPerPage){ 225 | dataForm.find("[name='rowPerPage']").val(jsonData[valueObject].rowPerPage); 226 | rowPerPage=jsonData[valueObject].rowPerPage; 227 | } 228 | }else{ 229 | if(jsonData.rowPerPage){ 230 | dataForm.find("[name='rowPerPage']").val(jsonData.rowPerPage); 231 | rowPerPage=jsonData.rowPerPage; 232 | }else if (Validate.integer.test(dataForm.find(".panelBar").attr("row"))) { 233 | rowPerPage =dataForm.find(".panelBar").attr("row"); 234 | } 235 | } 236 | if(easydataParams.row){ 237 | rowPerPage=easydataParams.row; 238 | } 239 | 240 | var pageNo=data.pageNo; 241 | if (valueObject) { 242 | if(!pageNo){ 243 | pageNo=data[valueObject].pageNo; 244 | } 245 | if(!pageNo){ 246 | pageNo=1; 247 | } 248 | }else{ 249 | if(!pageNo){ 250 | pageNo=1; 251 | } 252 | } 253 | 254 | var s=(pageNo-1)*rowPerPage; 255 | var e=parseInt(s)+parseInt(rowPerPage); 256 | 257 | 258 | if (valueObject) { 259 | 260 | var pageData={}; 261 | if($.isArray(data[valueObject].data)){ 262 | pageData=[]; 263 | } 264 | 265 | var j=0; 266 | for (var i in data[valueObject].data){ 267 | if(j>=s&&j=s&&j', 372 | '"' : '"', 373 | ''' : "'" 374 | } 375 | }, 376 | entityRegexes = { 377 | unescape : new RegExp('(' + ['&','<','>','"','''].join('|') + ')', 378 | 'g') 379 | } 380 | , 381 | unescape = function(string) { 382 | if (string == null) 383 | return ''; 384 | return ('' + string).replace(entityRegexes['unescape'], function( 385 | match) { 386 | return entityMap['unescape'][match]; 387 | }); 388 | }, 389 | formatContent = function(content, jsondata) { 390 | content=unescape(content); 391 | // EasyDataTable 属性表达式 392 | var reg = /\{([^}]+)\}/g; 393 | // var regExp=/\%\{([\s\S]+)\}/g; 394 | var regExp = /\%\{(.*)\}\%/g; //语句表达式 395 | var arrExp=/\[([0-9]+)\]/g;//数组表达式 396 | // EasyDataTable 语句表达式 397 | content = content.replace(regExp, function(m, i) { 398 | 399 | with (jsondata) { 400 | try { 401 | var res= eval($.trim(i).replace(arrExp,function(n,j){ 402 | return jsondata[j]; 403 | })); 404 | 405 | return res==undefined?"":res; 406 | } catch (e) { 407 | return m; 408 | } 409 | } 410 | }); 411 | content = content.replace(reg, function(m, i,i2) { 412 | with (jsondata) { 413 | try { 414 | var res; 415 | if((i+"").indexOf(".")!=-1){ 416 | res=jsondata[i]; 417 | } 418 | if(res){ 419 | return res; 420 | } 421 | if(/\[([0-9]+)\]/.test(i)){ 422 | return jsondata[i.substring(1,i.length-1)]; 423 | } 424 | 425 | return eval($.trim(i)) == null ? "" : eval($.trim(i)); 426 | } catch (e) { 427 | // return m; 428 | return ""; 429 | } 430 | } 431 | }); 432 | return content; 433 | }, 434 | clone=function(o){ 435 | if(o==null||o==undefined){ 436 | return o; 437 | } 438 | var o2 = o.constructor === Array ? [] : {}; 439 | for(var i in o){ 440 | o2[i] = typeof o[i] == "object" ? clone(o[i]) : o[i]; 441 | } 442 | return o2; 443 | }, 444 | staticMatch=function(name,value,match){ 445 | this.name=name; 446 | this.value=value; 447 | this.match=match; 448 | }, 449 | regFilter=function(v,sql){ //将正则表达式转为普通字符串 450 | return v.replace(/\\/g,"\\\\").replace(/\+|\.|\*|\?|\^|\$|\[|\]|\(|\)|\{|\}|\/|\|/g,"\\\$&"); 451 | }, 452 | sqlFilter=function(v){ //SQL不替换中括号,_和%替换 453 | return v.replace(/\\/g,"\\\\").replace(/\+|\.|\*|\?|\^|\$|\(|\)|\{|\}|\/|\|/g,"\\\$&").replace(/_/g,".").replace(/%/g,".*"); 454 | }, 455 | matchReg=function(matchMode,v,f){ 456 | var s="^",e="$"; //正则开始,结束标记 457 | if(matchMode=="extra"||matchMode=="extra_i"){//EXTRA完全匹配(正则) 458 | v=regFilter(v); 459 | }else if(matchMode=="sql"||matchMode=="sql_i"){ //SQL匹配(正则) 460 | v=sqlFilter(v); 461 | }else if(matchMode=="like"||matchMode=="like_i"){ //LIKE匹配(正则) 462 | v=regFilter(v); 463 | s="",e=""; 464 | }else{ //REG匹配(正则) 465 | s="",e=""; 466 | } 467 | return new RegExp(s+v+e,f); 468 | } 469 | , 470 | filterStaticData= function(data, params,or,dataForm) { 471 | 472 | var mode=DataTable.default_matchMode.toLowerCase(), 473 | f=mode.indexOf("_i")!=-1?"i":"", //正则匹配 474 | paramsMatch={} ; 475 | 476 | $.each(params,function(k,v){ 477 | if(/\[([0-9]+)\]/.test(k)){ 478 | k=k.substring(1,k.length-1); 479 | } 480 | if($.trim(v)!=""){ 481 | paramsMatch[k]=new staticMatch(k,matchReg(mode,v,f),mode); 482 | } 483 | }); 484 | 485 | 486 | 487 | dataForm.find(":input[mode]").each(function(k,v){ 488 | var v=$.trim($(this).val()); 489 | 490 | if(v!=""){ 491 | var 492 | name=$(this).attr("name"), 493 | mode=$(this).attr("mode").toLowerCase(); 494 | 495 | if(/\[([0-9]+)\]/.test(name)){ 496 | name=name.substring(1,name.length-1); 497 | } 498 | 499 | if(!(mode=="extra"||mode=="extra_i"||mode=="sql"||mode=="sql_i"||mode=="like"||mode=="like_i"||mode=="reg"||mode=="reg_i")){ 500 | mode=DataTable.default_matchMode.toLowerCase(); 501 | } 502 | var f=mode.indexOf("_i")!=-1?"i":""; //正则匹配 503 | paramsMatch[name]=new staticMatch(name,matchReg(mode,v,f),mode); 504 | } 505 | 506 | }); 507 | 508 | var l = $.isArray(data); // 是List(非Map) 509 | var filterData = {}; 510 | if (l) { 511 | filterData = []; 512 | } 513 | var noCondition = true; 514 | for ( var pname in paramsMatch) { // 如果没有条件,则返回所有 515 | if (paramsMatch[pname] != "") { 516 | noCondition = false; 517 | } 518 | } 519 | if (noCondition) { 520 | return data; 521 | } 522 | var j = 0; 523 | if (or) {// OR 524 | for ( var i in data) { 525 | var flag = false; 526 | for ( var pname in paramsMatch) { 527 | // 如果当前数据存在匹配条件 528 | try { 529 | if (paramsMatch[pname] != "" && data[i][pname]) { // 存在参数 530 | // reg正则表达式匹配 531 | if(paramsMatch[pname].value.test(data[i][pname])){ 532 | flag = true; // 数据匹配 533 | break; 534 | } 535 | 536 | } 537 | } catch (e) { 538 | } 539 | } 540 | if (flag) { 541 | if (l) { 542 | filterData[j] = data[i]; // 加入筛选集合 543 | j++; 544 | } else { 545 | filterData[i] = data[i]; // 加入筛选集合 546 | } 547 | } 548 | } 549 | } else { // AND 550 | for ( var i in data) { 551 | var flag = true; 552 | for ( var pname in paramsMatch) { 553 | 554 | // 如果当前数据存在匹配条件 555 | try { 556 | if (data[i][pname]) { // 存在参数 557 | // reg正则表达式匹配 558 | if(!paramsMatch[pname].value.test(data[i][pname])){ 559 | flag = false; // 数据不匹配 560 | break; 561 | } 562 | 563 | } else { 564 | flag = false; // 数据不匹配 565 | break; 566 | } 567 | } catch (e) { 568 | flag = false; // 数据不匹配 569 | break; 570 | } 571 | } 572 | if (flag) { 573 | if (l) { 574 | filterData[j] = data[i]; // 加入筛选集合 575 | j++; 576 | } else { 577 | filterData[i] = data[i]; // 加入筛选集合 578 | } 579 | } 580 | } 581 | } 582 | return filterData; 583 | }, 584 | getPostParam = function(postParam) { 585 | var params = {}; 586 | var exclued_params = "#maxPage#rowPerPage#datatableIndex#datatableCount#pageNo#totalCount#order#sort#" 587 | .toLowerCase(); 588 | 589 | for ( var i in postParam) { 590 | if (exclued_params.indexOf("#" + postParam[i].name.toLowerCase() 591 | + "#") == -1) { 592 | params[postParam[i].name] = postParam[i].value.replace( 593 | /(^\s+)|(\s+$)/g, ""); 594 | } 595 | } 596 | 597 | return params; 598 | }, 599 | loadShow = function(tableid, nowDataTable) { 600 | if(cacheLoadDefault[tableid]){ 601 | var loading_type = cacheLoadDefault[tableid].toLowerCase(); 602 | if (loading_type == 'default') { 603 | if (cacheInitLoading[tableid] == undefined) { // 初次加载 604 | nowDataTable.find(" tr:gt(0)").remove(); 605 | cacheInitLoading[tableid] = "loaded"; 606 | } 607 | // 新方式,切换页面时,禁用数据操作(禁用超链,按钮),显示为灰色 608 | nowDataTable.find(" tr:gt(0)").find("*").on("click", function() { 609 | return false; 610 | }); 611 | nowDataTable.find(" tr:gt(0)").find("*").css("color", "gray"); 612 | } else if (loading_type == 'none') { 613 | if (cacheInitLoading[tableid] == undefined) { // 初次加载 614 | nowDataTable.find(" tr:gt(0)").remove(); 615 | cacheInitLoading[tableid] = "loaded"; 616 | } 617 | nowDataTable.find("tr:gt(0)").hide(); // 隐藏数据行内容 618 | } else if (loading_type == 'hide') { 619 | if (cacheInitLoading[tableid] == undefined) { // 初次加载 620 | nowDataTable.find(" tr:gt(0)").remove(); 621 | cacheInitLoading[tableid] = "loaded"; 622 | } 623 | // 旧方式,切换页面时隐藏当前页面数据 624 | nowDataTable.find("tr:gt(0)").css("visibility", "hidden"); // 完全隐藏数据行 625 | } else if (loading_type == 'show') { 626 | nowDataTable.find(" tr:gt(0)").remove(); 627 | 628 | $("[id='" + tableid + "_loading_div']").hide(); 629 | nowDataTable.after("
" 631 | + DataTable.loading_msg + "
"); 632 | } else { 633 | nowDataTable.find(" tr:gt(0)").remove(); 634 | 635 | $("[id='" + tableid + "_loading_div']").hide(); 636 | nowDataTable.after("
" 638 | + cacheLoadDefault[tableid] + "
"); 639 | } 640 | } 641 | }, 642 | /** 643 | * 初始化需要显示的数据和内容。如果是静态全部查询,则负责筛选出缓存数据,再按照静态数据处理由分页加载显示这些缓存数据。 644 | * 645 | */ 646 | initDataAndContent=function(tableid, nowDataTable, dataForm, data, params, or,all){ 647 | 648 | var content = ""; 649 | var j = 0; 650 | var valueObject = nowDataTable.attr("value"); 651 | var dataTableOrder = ""; 652 | var dataTableSort = ""; 653 | if (valueObject) { 654 | dataTableOrder = data[valueObject].order; 655 | dataTableSort = data[valueObject].sort; 656 | if (!dataTableOrder) { 657 | dataTableOrder = data.order; 658 | } 659 | if (!dataTableSort) { 660 | dataTableSort = data.sort; 661 | } 662 | if (!dataTableOrder) { 663 | dataTableOrder = ''; 664 | } 665 | if (!dataTableSort) { 666 | dataTableSort = ''; 667 | } 668 | cacheData[tableid].pageNo = parseInt(data[valueObject].pageNo); 669 | cacheData[tableid].rowPerPage = parseInt(data[valueObject].rowPerPage); 670 | cacheData[tableid].totalCount = parseInt(data[valueObject].totalCount); 671 | cacheData[tableid].order = dataTableOrder; 672 | cacheData[tableid].sort = dataTableSort; 673 | cacheData[tableid].maxPage = Math 674 | .floor(((cacheData[tableid].totalCount - 1) / cacheData[tableid].rowPerPage) + 1); 675 | var filterData = data[valueObject].data; 676 | if (params) { // 如果是静态查询 677 | filterData = filterStaticData(data[valueObject].data, 678 | params, or,dataForm); 679 | } 680 | cacheStaticData[tableid] = clone(filterData); 681 | 682 | for ( var i in filterData) { 683 | filterData[i].datatableCount = parseInt(j) + 1; 684 | filterData[i].datatableIndex = parseInt(j); 685 | for ( var property in data) { 686 | if (property != valueObject) { 687 | filterData[i][property] = data[property]; 688 | } 689 | } 690 | filterData[i].pageNo = parseInt(data[valueObject].pageNo); 691 | filterData[i].rowPerPage = parseInt(data[valueObject].rowPerPage); 692 | filterData[i].totalCount = parseInt(data[valueObject].totalCount); 693 | filterData[i].maxPage = Math 694 | .floor(((parseInt(filterData[i].totalCount) - 1) / parseInt(filterData[i].rowPerPage)) + 1); 695 | filterData[i].key = i; 696 | filterData[i].order = dataTableOrder; 697 | filterData[i].sort = dataTableSort; 698 | if(!all){ 699 | content += formatContent( 700 | cacheDataRow[tableid], filterData[i]); 701 | } 702 | 703 | j++; 704 | } 705 | 706 | 707 | 708 | } else { 709 | dataTableOrder = data.order; 710 | dataTableSort = data.sort; 711 | if (!dataTableOrder) { 712 | dataTableOrder = ''; 713 | } 714 | if (!dataTableSort) { 715 | dataTableSort = ''; 716 | } 717 | 718 | cacheData[tableid].maxPage = Math 719 | .floor(((parseInt(data.totalCount) - 1) / parseInt(data.rowPerPage)) + 1); 720 | var filterData = data.data; 721 | 722 | if (params) { // 如果是静态查询 723 | filterData = filterStaticData(data.data, params, or,dataForm); 724 | } 725 | cacheStaticData[tableid] = clone(filterData); 726 | 727 | 728 | 729 | for ( var i in filterData) { 730 | for ( var property in data) { 731 | 732 | if (property != "data") { 733 | filterData[i][property] = data[property]; 734 | 735 | } 736 | } 737 | 738 | filterData[i].datatableCount = parseInt(j) + 1; 739 | filterData[i].datatableIndex = parseInt(j); 740 | filterData[i].key = i; 741 | filterData[i].maxPage = Math 742 | .floor(((parseInt(filterData[i].totalCount) - 1) / parseInt(filterData[i].rowPerPage)) + 1); 743 | filterData[i].order = dataTableOrder; 744 | filterData[i].sort = dataTableSort; 745 | 746 | 747 | 748 | 749 | if(!all){ 750 | content += formatContent( 751 | cacheDataRow[tableid], filterData[i]); 752 | } 753 | j++; 754 | } 755 | } 756 | 757 | 758 | 759 | // if (!all&¶ms) { // 如果不是全部静态数据筛选,并是静态查询 760 | dataForm.find(" .pages .totalCount").html(j); // 更新数据总条数 761 | // } 762 | // if(!all){ // 如果不是全部静态数据筛选,则处理数据 763 | return {"content":content,"dataTableOrder":dataTableOrder,"dataTableSort":dataTableSort}; 764 | // } 765 | } 766 | , 767 | /** 768 | * 展示数据 769 | * @param tableid 数据表格id 770 | * @param nowDataTable 数据表格对象 771 | * @param dataForm 数据表格所在表单 772 | * @param data 原始数据 773 | * @param params 静态查询时的条件参数 774 | * @param or 查询方式,是否OR 775 | * @param all 查询范围,是否ALL 776 | */ 777 | dataShow= function(tableid, nowDataTable, dataForm, data, params, or,all) { 778 | 779 | 780 | //content,dataTableOrder,dataTableSort 781 | var res=initDataAndContent(tableid, nowDataTable, dataForm, data, params, or,all); 782 | 783 | 784 | if (!params) { // 非静态查询筛选分页 785 | /* 786 | * 分页部分 787 | */ 788 | pageTheme(tableid, cachePageTheme[tableid]); 789 | 790 | // 初始化分页显示的数据 791 | dataForm.find(" .pages .totalCount").html(data['totalCount']); 792 | dataForm.find(" .mycombox").val(data['rowPerPage']); 793 | dataForm.find(" [name='pageNo']").val(data['pageNo']); 794 | dataForm 795 | .find(" .pages .maxPage") 796 | .html( 797 | Math 798 | .floor(((parseInt(data['totalCount']) - 1) / parseInt(data['rowPerPage'])) + 1)); 799 | dataForm.find("[name='rowPerPage']").off("change"); 800 | dataForm 801 | .find("[name='rowPerPage']") 802 | .on( 803 | "change", 804 | function(e) { 805 | 806 | var row = $(this).val(); // 行 807 | 808 | var pagenoEle = dataForm 809 | .find("[name='pageNo']"); 810 | var maxPage = Math 811 | .floor(((cacheData[tableid]['totalCount'] - 1) / row) + 1);// 最大页 812 | 813 | if (pagenoEle.val() > maxPage) { 814 | pagenoEle.val(maxPage); 815 | } 816 | if(cacheStaticTable[tableid]){ 817 | staticPagination(tableid); 818 | }else{ 819 | DataTable.load(tableid); 820 | } 821 | }); 822 | pageCheck(tableid);// 分页标签状态设置 823 | } 824 | 825 | // 排序隐藏字段 826 | var orderInfo = "" 831 | + ""; 834 | 835 | res.content += orderInfo; 836 | // 清除大于0的行和loading的msg 837 | nowDataTable.find(" tr:gt(0)").remove(); 838 | $("[id='" + tableid + "_loading_div']").remove(); 839 | // 显示数据 840 | nowDataTable.append(res.content); 841 | // 表格效果事件 842 | addRowEvent(nowDataTable); 843 | 844 | }, 845 | dataObject = function(k, v) { 846 | this.k = k; 847 | this.v = v; 848 | }, 849 | dataSort = function(data, dataTableSort,dataTableOrder) { 850 | 851 | var l = true;// List集合 852 | 853 | if (!$.isArray(data)) {// Map集合 854 | l = false; 855 | 856 | } 857 | 858 | var a = new Array(); // keyArray 859 | for ( var i in data) { 860 | a.push(new dataObject(i, data[i])); 861 | } 862 | 863 | //数组 864 | if(/\[([0-9]+)\]/.test(dataTableSort)){ 865 | dataTableSort=dataTableSort.substring(1,dataTableSort.length-1); 866 | } 867 | 868 | a.sort(function(x, y) { 869 | if (dataTableSort.toLowerCase() == "key") { // MAP 870 | if (x.k == y.k) { 871 | return 0; 872 | } 873 | if (dataTableOrder.toLowerCase() == "asc") { 874 | if (x.k > y.k) { 875 | return 1; 876 | } else { 877 | return -1; 878 | } 879 | } else { 880 | if (y.k > x.k) { 881 | return 1; 882 | } else { 883 | return -1; 884 | } 885 | } 886 | } else { 887 | if (x.v[dataTableSort] == y.v[dataTableSort]) { 888 | return 0; 889 | } 890 | if (dataTableOrder.toLowerCase() == "asc") { 891 | if (x.v[dataTableSort] > y.v[dataTableSort]) { 892 | return 1; 893 | } else { 894 | return -1; 895 | } 896 | } else { 897 | if (y.v[dataTableSort] > x.v[dataTableSort]) { 898 | return 1; 899 | } else { 900 | return -1; 901 | } 902 | } 903 | } 904 | }); 905 | 906 | var b = []; 907 | if (l) { // list集合 908 | var j = 0; 909 | for ( var i = 0; i < a.length; i++) { 910 | 911 | b[j] = a[i].v; 912 | 913 | j++; 914 | } 915 | } else { // map集合 916 | for ( var i = 0; i < a.length; i++) { 917 | b[a[i].k] = a[i].v; 918 | } 919 | } 920 | return b; 921 | 922 | },Validate = { 923 | integer : /^[1-9][0-9]*$/ 924 | }, 925 | firstDisable=function(tableid,first,prev){ 926 | if(!first){ 927 | var dataForm = $("form").has("[id='" + tableid + "']"); 928 | first = dataForm.find("[name='first']"); 929 | prev = dataForm.find("[name='prev']"); 930 | } 931 | first.off("click"); 932 | prev.off("click"); 933 | first.removeClass("pageGoHover"); 934 | prev.removeClass("pageGoHover"); 935 | first.addClass("firstlastgo"); 936 | prev.addClass("firstlastgo"); 937 | first.unbind("mouseenter").unbind("mouseleave"); 938 | prev.unbind("mouseenter").unbind("mouseleave"); 939 | 940 | }, 941 | firstEnable=function(tableid,first,prev){ 942 | if(!first){ 943 | var dataForm = $("form").has("[id='" + tableid + "']"); 944 | first = dataForm.find("[name='first']"); 945 | prev = dataForm.find("[name='prev']"); 946 | } 947 | 948 | 949 | first.off("click"); 950 | prev.off("click"); 951 | first.on("click", function() { 952 | DataTable.first(tableid); 953 | }); 954 | prev.on("click", function() { 955 | DataTable.prev(tableid); 956 | }); 957 | first.unbind("mouseenter").unbind("mouseleave"); 958 | prev.unbind("mouseenter").unbind("mouseleave"); 959 | first.removeClass("firstlastgo"); 960 | prev.removeClass("firstlastgo"); 961 | 962 | }, 963 | lastDisable=function(tableid,last,next){ 964 | if(!last){ 965 | var dataForm = $("form").has("[id='" + tableid + "']"); 966 | last = dataForm.find("[name='last']"); 967 | next = dataForm.find("[name='next']"); 968 | } 969 | last.off("click"); 970 | next.off("click"); 971 | last.removeClass("pageGoHover"); 972 | next.removeClass("pageGoHover"); 973 | last.addClass("firstlastgo"); 974 | next.addClass("firstlastgo"); 975 | last.unbind("mouseenter").unbind("mouseleave"); 976 | next.unbind("mouseenter").unbind("mouseleave"); 977 | }, 978 | lastEnable=function(tableid,last,next){ 979 | if(!last){ 980 | var dataForm = $("form").has("[id='" + tableid + "']"); 981 | last = dataForm.find("[name='last']"); 982 | next = dataForm.find("[name='next']"); 983 | } 984 | next.off("click"); 985 | last.off("click"); 986 | next.on("click", function() { 987 | DataTable.next(tableid); 988 | }); 989 | last.on("click", function() { 990 | DataTable.last(tableid); 991 | }); 992 | next.unbind("mouseenter").unbind("mouseleave"); 993 | last.unbind("mouseenter").unbind("mouseleave"); 994 | next.removeClass("firstlastgo"); 995 | last.removeClass("firstlastgo"); 996 | } 997 | ,pageCheck = function(tableid) { 998 | var dataForm = $("form").has("[id='" + tableid + "']"); 999 | var maxPage = cacheData[tableid]["maxPage"]; 1000 | var nowPage = parseInt(cacheData[tableid]["pageNo"]); 1001 | var first = dataForm.find("[name='first']"); 1002 | var prev = dataForm.find("[name='prev']"); 1003 | var next = dataForm.find("[name='next']"); 1004 | var last = dataForm.find("[name='last']"); 1005 | var pagegoto = dataForm.find("[name='pagegoto']"); 1006 | var numgoto = dataForm.find("[name='numgoto']"); 1007 | 1008 | firstEnable(tableid,first,prev); 1009 | lastEnable(tableid,last,next); 1010 | 1011 | pagegoto.off("click"); 1012 | numgoto.off("click"); 1013 | pagegoto.on("click", function() { 1014 | DataTable.gopage(tableid); 1015 | }); 1016 | numgoto.on("click", function(e) { 1017 | DataTable.numgoto(tableid, e); 1018 | }); 1019 | next.removeClass("firstlastgo"); 1020 | last.removeClass("firstlastgo"); 1021 | 1022 | loadInit(); 1023 | 1024 | 1025 | if (nowPage <= 1) { 1026 | firstDisable(tableid,first,prev); 1027 | } 1028 | if (nowPage >= maxPage) { 1029 | lastDisable(tableid,last,next); 1030 | 1031 | } 1032 | },pageMsgCkeck = function(tableid) { 1033 | if (!cacheLanguage[tableid].first) { 1034 | cacheLanguage[tableid].first = DataTable.default_lang.first; 1035 | } 1036 | if (!cacheLanguage[tableid].previous) { 1037 | cacheLanguage[tableid].previous = DataTable.default_lang.previous; 1038 | } 1039 | if (!cacheLanguage[tableid].next) { 1040 | cacheLanguage[tableid].next = DataTable.default_lang.next; 1041 | } 1042 | if (!cacheLanguage[tableid].last) { 1043 | cacheLanguage[tableid].last = DataTable.default_lang.last; 1044 | } 1045 | if (!cacheLanguage[tableid].totalPage) { 1046 | cacheLanguage[tableid].totalPage = DataTable.default_lang.totalPage; 1047 | } 1048 | if (!cacheLanguage[tableid].rowPerPage) { 1049 | cacheLanguage[tableid].rowPerPage = DataTable.default_lang.rowPerPage; 1050 | } 1051 | if (!cacheLanguage[tableid].totalCount) { 1052 | cacheLanguage[tableid].totalCount = DataTable.default_lang.totalCount; 1053 | } 1054 | }, 1055 | pageNumSpan = function(tableid, nowPage, totalCount) { 1056 | nowPage = parseInt(nowPage); 1057 | var maxPage = Math.floor((parseInt(totalCount) - 1) 1058 | / parseInt(cacheData[tableid]["rowPerPage"]) + 1); 1059 | var pageStart = nowPage - 3; 1060 | var pageEnd = nowPage + 3; 1061 | if (pageStart < 1) { 1062 | pageStart = 1; 1063 | pageEnd = pageStart + 6; 1064 | if (pageEnd > maxPage) { 1065 | pageEnd = maxPage; 1066 | } 1067 | } 1068 | if (pageEnd > maxPage) { 1069 | pageEnd = maxPage; 1070 | pageStart = pageEnd - 6; 1071 | if (pageStart < 1) { 1072 | pageStart = 1; 1073 | } 1074 | } 1075 | var pageNum = ""; 1076 | for ( var i = pageStart; i <= pageEnd; i++) { 1077 | if (i == nowPage) { 1078 | pageNum += '' + i + ""; 1080 | } else { 1081 | pageNum += '' + i + ""; 1083 | } 1084 | } 1085 | return pageNum; 1086 | }, 1087 | pageTheme = function(tableid, theme) { 1088 | var dataForm = $("form").has("[id='" + tableid + "']"); 1089 | var content = ""; 1090 | 1091 | // 如果使用自定义分页内容(不使用主题) 1092 | if (theme && theme.toLowerCase() == "no") { 1093 | // 不使用主题 1094 | content = cacheUserPage[tableid]; 1095 | } else { 1096 | var pageshowCount = dataForm.find(".panelBar").length; 1097 | if (pageshowCount != 0) { 1098 | 1099 | var sizeArray=cacheSizeArray[tableid]; 1100 | if(!sizeArray){ 1101 | 1102 | // 存在分页标签 1103 | var sizes = dataForm.find(".panelBar").attr("size"); 1104 | var sizeArray = [ cacheData[tableid].rowPerPage ]; 1105 | if (sizes) { 1106 | sizeArray = sizes.split(","); 1107 | } 1108 | if (cacheDefaultRow[tableid]) { 1109 | var sa = "#" + sizeArray.join("#") + "#"; 1110 | // 如果已经存在,则不加入 1111 | if (sa.indexOf("#" + cacheDefaultRow[tableid] + "#") != -1) { 1112 | cacheDefaultRow[tableid] = null; 1113 | } else { 1114 | sizeArray.push(cacheDefaultRow[tableid]); 1115 | } 1116 | } 1117 | 1118 | sizeArray.sort(function(i, j) { 1119 | return parseInt(i) - parseInt(j); 1120 | }); 1121 | cacheSizeArray[tableid]=sizeArray; 1122 | } 1123 | 1124 | 1125 | 1126 | pageMsgCkeck(tableid); 1127 | var rowPerPageIndex = cacheLanguage[tableid].rowPerPage 1128 | .indexOf("{0}"); 1129 | var rowPerPageStart = cacheLanguage[tableid].rowPerPage 1130 | .substring(0, rowPerPageIndex); 1131 | var rowPerPageEnd = cacheLanguage[tableid].rowPerPage 1132 | .substring(rowPerPageIndex + 3); 1133 | var rowNumSpan = '
' + rowPerPageStart 1134 | + "" 1135 | + '" + rowPerPageEnd + ","; 1141 | var totalPageIndex = cacheLanguage[tableid].totalPage 1142 | .indexOf("{0}"); 1143 | var totalPageStart = cacheLanguage[tableid].totalPage 1144 | .substring(0, totalPageIndex); 1145 | var totalPageEnd = cacheLanguage[tableid].totalPage 1146 | .substring(totalPageIndex + 3); 1147 | var totalCountIndex = cacheLanguage[tableid].totalCount 1148 | .indexOf("{0}"); 1149 | var totalCountStart = cacheLanguage[tableid].totalCount 1150 | .substring(0, totalCountIndex); 1151 | var totalCountEnd = cacheLanguage[tableid].totalCount 1152 | .substring(totalCountIndex + 3); 1153 | rowNumSpan += totalCountStart 1154 | + '' + totalCountEnd 1155 | + "
"; 1156 | var start = '
'; 1157 | var totalPageSpan = '' + totalPageStart 1158 | + '' + totalPageEnd 1159 | + ""; 1160 | var back = '' 1161 | + cacheLanguage[tableid].first + "" 1162 | + '' 1163 | + cacheLanguage[tableid].previous + ""; 1164 | 1165 | var pageNum = "" 1166 | + pageNumSpan(tableid, 1167 | cacheData[tableid]["pageNo"], 1168 | cacheData[tableid]["totalCount"]) 1169 | + ""; 1170 | var forward = '' 1171 | + cacheLanguage[tableid].next + "" 1172 | + '' 1173 | + cacheLanguage[tableid].last + ""; 1174 | var pagegotoSpan = ''; 1175 | pagegotoSpan += '>>'; 1176 | var end = "
"; 1177 | 1178 | if (!theme || theme.toUpperCase() == "FULL") { 1179 | content = rowNumSpan + start + totalPageSpan + back 1180 | + pageNum + forward + pagegotoSpan + end; 1181 | } else if (theme.toUpperCase() == "SIMPLE") { 1182 | content = rowNumSpan + start + totalPageSpan + back 1183 | + forward + pagegotoSpan + end; 1184 | } else { 1185 | content = rowNumSpan + start + totalPageSpan + back 1186 | + pageNum + forward + pagegotoSpan + end; 1187 | } 1188 | } 1189 | } 1190 | 1191 | dataForm.find(".panelBar").html( 1192 | formatContent(content, cacheData[tableid])); 1193 | dataForm.find(".panelBar .customPaging").show(); 1194 | }, 1195 | loadInit = function() { 1196 | $(".pagego").hover(function() { 1197 | $(this).addClass("pageGoHover"); 1198 | }, function() { 1199 | $(this).removeClass("pageGoHover"); 1200 | }); 1201 | }, 1202 | /** 1203 | * 静态数据查询 1204 | * @param tableid 数据表格 1205 | * @param or 查询方式,是否OR查询 1206 | * @param data 原始数据 1207 | * @param all 查询范围,是否对全部静态数据筛选 1208 | */ 1209 | doStaticSearch=function(tableid,or,data,all){ 1210 | DataTable.resetOrder(tableid); //取消排序效果 1211 | 1212 | // matchMode 检索模式,支持extra(绝对)、like(模糊)、sql(sql通配符)、reg(正则) 1213 | var nowDataTable = $("[id='" + tableid + "']"); 1214 | if (nowDataTable.length == 0) { 1215 | return; 1216 | } 1217 | var dataForm = $("form").has("[id='" + tableid + "']"); 1218 | var pagenoEle = dataForm.find("[name='pageNo']"); 1219 | pagenoEle.val(1); //显示第一页 1220 | 1221 | // start函数调用,数据加载开始时执行 1222 | if (cacheStartFun[tableid]) { 1223 | try { 1224 | // 数据表格,是否是第一次加载 1225 | cacheStartFun[tableid](nowDataTable[0], 1226 | !cacheInit[tableid]); 1227 | } catch (e) { 1228 | } 1229 | } 1230 | 1231 | // 分页加载数据时,表格的显示方式 1232 | loadShow(tableid, nowDataTable); 1233 | 1234 | //表单参数,静态筛选条件 1235 | postParam = dataForm.serializeArray(); 1236 | 1237 | var params = getPostParam(postParam); 1238 | 1239 | if(all){ 1240 | //初始化查询结果数据 1241 | initDataAndContent(tableid, nowDataTable, dataForm, data, params, or,all); 1242 | var valueObject = nowDataTable.attr("value"); 1243 | var jsonData=cacheStaticTable[tableid]; 1244 | 1245 | if (valueObject) { 1246 | jsonData[valueObject].data=cacheStaticData[tableid] ; 1247 | }else{ 1248 | jsonData.data=cacheStaticData[tableid] ; 1249 | } 1250 | 1251 | //对ALL全部静态数据筛选时,缓存筛选后的数据,然后进行分页 1252 | cacheStaticTable[tableid]=clone(jsonData); 1253 | 1254 | var dataForm = $("form").has("[id='" + tableid + "']"); 1255 | 1256 | jsonData.pageNo=dataForm.find("[name='pageNo']").val(); 1257 | 1258 | jsonData.rowPerPage=dataForm.find("[name='rowPerPage']").val(); 1259 | 1260 | //对全部数据筛选查询的结果进行分页加载显示 1261 | innerLoad(tableid, {}, jsonData, true); 1262 | 1263 | 1264 | }else{ 1265 | dataShow(tableid, nowDataTable, dataForm, data, params, or,all); 1266 | } 1267 | 1268 | // end函数调用,数据加载结束时执行 1269 | if (cacheEndFun[tableid]) { 1270 | try { 1271 | // 数据表格,是否是第一次加载 1272 | cacheEndFun[tableid](nowDataTable[0], 1273 | !cacheInit[tableid]); 1274 | } catch (e) { 1275 | } 1276 | } 1277 | }, 1278 | pageRangeChk=function(tableid){ 1279 | var dataForm = $("form").has("[id='" + tableid + "']"); 1280 | /* 1281 | * 提交分页数据验证 1282 | */ 1283 | var pagenoEle = dataForm.find("[name='pageNo']"); 1284 | var row = dataForm.find("[name='rowPerPage']").val(); 1285 | var maxPage = Math.floor((cacheData[tableid]["totalCount"] - 1) 1286 | / row + 1); 1287 | if (pagenoEle.val() > maxPage) { 1288 | pagenoEle.val(maxPage); 1289 | } 1290 | },//first,last,disable,enable检测 1291 | fldeChk=function(tableid,nowpage){ 1292 | firstEnable(tableid); 1293 | lastEnable(tableid); 1294 | if(nowpage<=1){ 1295 | //由末页转到首页 1296 | firstDisable(tableid); //禁用首页,上一页 1297 | 1298 | //总页数大于1页,则末页下一页启用 1299 | if(cacheData[tableid]["maxPage"]>1){ 1300 | lastEnable(tableid); 1301 | } 1302 | } 1303 | if(nowpage>=cacheData[tableid]["maxPage"]){ 1304 | //由首页转到末页 1305 | lastDisable(tableid); 1306 | //总页数大于1页,则首页上一页启用 1307 | if(cacheData[tableid]["maxPage"]>1){ 1308 | firstEnable(tableid); 1309 | } 1310 | } 1311 | }, 1312 | //渲染页面的排序指示符号 1313 | dtSort=function(){ 1314 | $("table:has([sort]),table:has([staticSort])") 1315 | .each(function() { 1316 | var table = $(this); 1317 | var tableid = table.attr("id"); 1318 | table.find("[sort],[staticSort]").each( 1319 | function() { 1320 | var o = $(this); 1321 | var oDef=order_default; 1322 | var oU=order_up; 1323 | var oD=order_down; 1324 | 1325 | var oSel; 1326 | if(orderCache){ 1327 | $.each(orderCache,function(k,v){ 1328 | var k2=","+k.toLowerCase()+","; 1329 | tableidTmp=","+tableid.toLowerCase()+","; 1330 | 1331 | if(k2.indexOf(tableidTmp)!=-1){ 1332 | oSel=true; 1333 | } 1334 | if(oSel){ 1335 | orderCache[k].order_default?oDef=orderCache[k].order_default:""; 1336 | orderCache[k].order_up?oU=orderCache[k].order_up:""; 1337 | orderCache[k].order_down?oD=orderCache[k].order_down:""; 1338 | return; 1339 | } 1340 | }); 1341 | } 1342 | var sortHtml; 1343 | if(o.find("span.sortArrow").length>0){ 1344 | sortHtml=o.html().replace(o.find("span.sortArrow").html(),oDef); 1345 | }else{ 1346 | sortHtml=o.html()+ ""+oDef+""; 1347 | } 1348 | o.html(sortHtml); 1349 | o.css("cursor", "pointer"); 1350 | o.off("click"); 1351 | var dataForm = $("form").has( 1352 | "[id='" + tableid 1353 | + "']"); 1354 | o.on("click",function(e) { 1355 | var sort = o.attr("sort")|| o.attr("staticSort"); 1356 | 1357 | if (dataForm 1358 | .find("input[name='sort']").length > 0) { 1359 | dataForm.find("input[name='sort']").val(sort); 1360 | 1361 | dataForm.find("input[name='order']") 1362 | .val( 1363 | dataForm 1364 | .find( 1365 | "input[name='order']") 1366 | .val() 1367 | .toLowerCase() == "asc" ? "desc" 1368 | : "asc"); 1369 | 1370 | 1371 | var arrowObj = $( 1372 | this) 1373 | .find( 1374 | "[name='orderspan']"); 1375 | if (cacheOrderArrow[tableid]) { 1376 | cacheOrderArrow[tableid] 1377 | .html(oDef); 1378 | } 1379 | if (dataForm 1380 | .find( 1381 | "input[name='order']") 1382 | .val() == "asc") { 1383 | arrowObj 1384 | .html(oU); 1385 | } else if (dataForm 1386 | .find( 1387 | "input[name='order']") 1388 | .val() == "desc") { 1389 | arrowObj 1390 | .html(oD); 1391 | } else { 1392 | arrowObj 1393 | .html(oDef); 1394 | } 1395 | cacheOrderArrow[tableid] = arrowObj; 1396 | if (o.attr("sort")) { 1397 | 1398 | DataTable.load(tableid); 1399 | } else { 1400 | DataTable 1401 | .staticDataSort( 1402 | tableid, 1403 | sort, 1404 | dataForm 1405 | .find( 1406 | "input[name='order']") 1407 | .val()); 1408 | } 1409 | } 1410 | 1411 | }); 1412 | }); 1413 | table.find("[sort],[staticSort]").hover( 1414 | function() { 1415 | var arrowObj = $(this).find( 1416 | "[name='orderspan']"); 1417 | arrowObj.removeClass("sortArrow"); 1418 | arrowObj.removeClass("sortArrowDown"); 1419 | arrowObj.addClass("sortArrowHover"); 1420 | }, 1421 | function() { 1422 | var arrowObj = $(this).find( 1423 | "[name='orderspan']"); 1424 | arrowObj.removeClass("sortArrowHover"); 1425 | arrowObj.addClass("sortArrow"); 1426 | }); 1427 | table.find("[sort],[staticSort]").on( 1428 | "mousedown", 1429 | function() { 1430 | var arrowObj = $(this).find( 1431 | "[name='orderspan']"); 1432 | arrowObj.removeClass("sortArrowHover"); 1433 | arrowObj.addClass("sortArrowDown"); 1434 | }); 1435 | table.find("[sort],[staticSort]").on( 1436 | "mouseup", 1437 | function() { 1438 | var arrowObj = $(this).find( 1439 | "[name='orderspan']"); 1440 | arrowObj.removeClass("sortArrowDown"); 1441 | arrowObj.addClass("sortArrowHover"); 1442 | }); 1443 | }); 1444 | }, 1445 | //表格效果事件 1446 | addRowEvent=function(nowDataTable){ 1447 | nowDataTable.find(" tr:even").addClass("evenColor"); 1448 | nowDataTable.find(" tr").hover(function() { 1449 | $(this).addClass("trHover"); 1450 | }, function() { 1451 | $(this).removeClass("trHover"); 1452 | }); 1453 | var oldTr; 1454 | nowDataTable.find(" tr").on("click", function() { 1455 | if($(this).hasClass("trClick")){ 1456 | $(this).removeClass("trClick"); 1457 | oldTr=null; 1458 | }else{ 1459 | if (oldTr) { 1460 | oldTr.removeClass("trClick"); 1461 | } 1462 | 1463 | $(this).addClass("trClick"); 1464 | oldTr = $(this); 1465 | } 1466 | }); 1467 | var tableid=nowDataTable.attr("id"); 1468 | 1469 | if(rowEventsDT[tableid]){ 1470 | $.each(rowEventsDT[tableid],function(eventName,fn){ 1471 | nowDataTable.find(" tr").on(eventName,fn); 1472 | }); 1473 | }else{ 1474 | if(rowEvents){ 1475 | $.each(rowEvents,function(eventName,fn){ 1476 | nowDataTable.find(" tr").on(eventName,fn); 1477 | }); 1478 | } 1479 | 1480 | } 1481 | 1482 | } 1483 | ; 1484 | 1485 | var DataTable = { 1486 | default_row : 5, 1487 | //extra,extra_i,like,like_i,sql,sql_i,reg,reg_i 1488 | default_matchMode:'like_i', 1489 | loading_show : "default", 1490 | loading_msg:"Data is loading ......", 1491 | default_lang:{ 1492 | first:"first", 1493 | previous:"previous", 1494 | next:"next", 1495 | last:"last", 1496 | totalCount:"total {0} rows", 1497 | totalPage:"total {0} pages", 1498 | rowPerPage:"page for {0} rows" 1499 | }, 1500 | staticLoad: function(tableid, jsonData, easydataParams) { 1501 | if (typeof jsonData == "string") { 1502 | jsonData = eval("(" + jsonData + ")"); 1503 | } 1504 | 1505 | cacheStaticTable[tableid] = clone(jsonData); // 静态数据缓存 1506 | cacheInitStaticData[tableid] = clone(jsonData); // 静态数据缓存 1507 | innerLoad(tableid, easydataParams, clone(jsonData), true); 1508 | 1509 | }, 1510 | fileLoad: function(tableid, jsonFile, easydataParams) { 1511 | $.post(jsonFile,function(jsonData){ 1512 | cacheStaticTable[tableid] = clone(jsonData); // 静态数据缓存 1513 | cacheInitStaticData[tableid] = clone(jsonData); // 静态数据缓存 1514 | innerLoad(tableid, easydataParams, clone(jsonData), true); 1515 | }); 1516 | }, 1517 | load : function(tableid, easydataParams) { 1518 | innerLoad(tableid, easydataParams); 1519 | }, 1520 | //取消排序效果 1521 | resetOrder:function(tableid){ 1522 | var dataForm = $("form").has("[id='" + tableid + "']"); 1523 | dataForm.find("[name='order']").val(""); 1524 | dataForm.find("[name='sort']").val(""); 1525 | if (cacheOrderArrow[tableid]) { 1526 | cacheOrderArrow[tableid].html("↑↓"); 1527 | } 1528 | }, 1529 | //取消排序效果,刷新表格,重新加载数据 1530 | reload : function(tableid) { 1531 | DataTable.resetOrder(tableid); 1532 | if(cacheStaticTable[tableid]){//如果是静态数据源 1533 | staticPagination(tableid); 1534 | }else{//如果是动态数据源 1535 | DataTable.load(tableid); 1536 | } 1537 | }, 1538 | out : function(msg) { 1539 | return msg; 1540 | },staticDataSort : function(tableid, dataTableSort, dataTableOrder) { 1541 | 1542 | var nowDataTable = $("[id='" + tableid + "']"); 1543 | if (nowDataTable.length == 0) { 1544 | return; 1545 | } 1546 | var dataForm = $("form").has("[id='" + tableid + "']"); 1547 | var content = ""; 1548 | var j = 0; 1549 | var valueObject = nowDataTable.attr("value"); 1550 | 1551 | var data = cacheData[tableid]; 1552 | 1553 | if (valueObject) { 1554 | 1555 | 1556 | // 获得排序后的数据 1557 | var filterData = dataSort(cacheStaticData[tableid], 1558 | dataTableSort, dataTableOrder); 1559 | 1560 | for ( var i in filterData) { 1561 | filterData[i].datatableCount = parseInt(j) + 1; 1562 | filterData[i].datatableIndex = parseInt(j); 1563 | for ( var property in data) { 1564 | if (property != valueObject) { 1565 | filterData[i][property] = data[property]; 1566 | } 1567 | } 1568 | filterData[i].pageNo = parseInt(data[valueObject].pageNo); 1569 | filterData[i].rowPerPage = parseInt(data[valueObject].rowPerPage); 1570 | filterData[i].totalCount = parseInt(data[valueObject].totalCount); 1571 | filterData[i].maxPage = Math 1572 | .floor(((parseInt(filterData[i].totalCount) - 1) / parseInt(filterData[i].rowPerPage)) + 1); 1573 | filterData[i].key = i; 1574 | filterData[i].order = dataTableOrder; 1575 | filterData[i].sort = dataTableSort; 1576 | content += formatContent( 1577 | cacheDataRow[tableid], filterData[i]); 1578 | j++; 1579 | } 1580 | dataForm.find(" .pages .totalCount").html(j); // 更新数据总条数 1581 | // 更新分页信息 1582 | // dataForm.find(".panelBar 1583 | // [id='datatable_pagenum']").html(pageNumSpan(tableid,1,j)); 1584 | } else { 1585 | 1586 | // 获得排序后的数据 1587 | var filterData = dataSort( cacheStaticData[tableid], 1588 | dataTableSort,dataTableOrder); 1589 | 1590 | 1591 | for ( var i in filterData) { 1592 | for ( var property in data) { 1593 | if (property != "data") { 1594 | filterData[i][property] = data[property]; 1595 | } 1596 | } 1597 | 1598 | filterData[i].datatableCount = parseInt(j) + 1; 1599 | filterData[i].datatableIndex = parseInt(j); 1600 | filterData[i].key = i; 1601 | filterData[i].maxPage = Math 1602 | .floor(((parseInt(filterData[i].totalCount) - 1) / parseInt(filterData[i].rowPerPage)) + 1); 1603 | filterData[i].order = dataTableOrder; 1604 | filterData[i].sort = dataTableSort; 1605 | content += formatContent( 1606 | cacheDataRow[tableid], filterData[i]); 1607 | j++; 1608 | } 1609 | dataForm.find(" .pages .totalCount").html(j); // 更新数据总条数 1610 | // 更新分页信息 1611 | // dataForm.find(".panelBar 1612 | // [id='datatable_pagenum']").html(pageNumSpan(tableid,1,j)); 1613 | 1614 | } 1615 | 1616 | // 排序隐藏字段 1617 | var orderInfo = "" 1622 | + ""; 1625 | 1626 | content += orderInfo; 1627 | // 清除大于0的行和loading的msg 1628 | nowDataTable.find(" tr:gt(0)").remove(); 1629 | $("[id='" + tableid + "_loading_div']").remove(); 1630 | // 显示数据 1631 | nowDataTable.append(content); 1632 | // 表格效果事件 1633 | addRowEvent(nowDataTable); 1634 | }, 1635 | /** 1636 | * 全部静态数据范围静态搜索 1637 | * @param tableid 数据表格id 1638 | * @param or 是否使用or查询 1639 | */ 1640 | staticSearchAll:function(tableid,or) { 1641 | //全部静态数据筛选 1642 | doStaticSearch(tableid,or,cacheInitStaticData[tableid],true); 1643 | }, 1644 | /** 1645 | * 当前页面静态数据范围静态搜索 1646 | * @param tableid 数据表格id 1647 | * @param or 是否使用or查询 1648 | */ 1649 | staticSearch:function(tableid,or) { 1650 | //当前静态页面数据筛选 1651 | doStaticSearch(tableid,or,cacheData[tableid]); 1652 | }, 1653 | first : function(tableid) { 1654 | var dataForm = $("form").has("[id='" + tableid + "']"); 1655 | /* 1656 | * 提交分页数据验证 1657 | */ 1658 | var pagenoEle = dataForm.find("[name='pageNo']"); 1659 | pagenoEle.val(1); 1660 | 1661 | fldeChk(tableid,1); 1662 | 1663 | if (cacheStaticTable[tableid]) { 1664 | staticPagination(tableid); 1665 | } else { 1666 | this.load(tableid); 1667 | } 1668 | 1669 | }, 1670 | prev : function(tableid) { 1671 | var dataForm = $("form").has("[id='" + tableid + "']"); 1672 | /* 1673 | * 提交分页数据验证 1674 | */ 1675 | var pagenoEle = dataForm.find("[name='pageNo']"); 1676 | pagenoEle.val(parseInt(cacheData[tableid]["pageNo"]) - 1); 1677 | fldeChk(tableid,pagenoEle.val()); 1678 | if (cacheStaticTable[tableid]) { 1679 | staticPagination(tableid); 1680 | } else { 1681 | this.load(tableid); 1682 | } 1683 | }, 1684 | next : function(tableid) { 1685 | var dataForm = $("form").has("[id='" + tableid + "']"); 1686 | /* 1687 | * 提交分页数据验证 1688 | */ 1689 | var pagenoEle = dataForm.find("[name='pageNo']"); 1690 | pagenoEle.val(parseInt(cacheData[tableid]["pageNo"]) + 1); 1691 | 1692 | fldeChk(tableid,pagenoEle.val()); 1693 | 1694 | if (cacheStaticTable[tableid]) { 1695 | staticPagination(tableid); 1696 | } else { 1697 | this.load(tableid); 1698 | } 1699 | }, 1700 | last : function(tableid) { 1701 | var dataForm = $("form").has("[id='" + tableid + "']"); 1702 | 1703 | var pagenoEle = dataForm.find("[name='pageNo']"); 1704 | pagenoEle.val(cacheData[tableid]["maxPage"]); 1705 | fldeChk(tableid,cacheData[tableid]["maxPage"]); 1706 | 1707 | if (cacheStaticTable[tableid]) { 1708 | staticPagination(tableid); 1709 | } else { 1710 | this.load(tableid); 1711 | } 1712 | }, 1713 | gopage : function(tableid) { 1714 | pageRangeChk(tableid); 1715 | var dataForm = $("form").has("[id='" + tableid + "']"); 1716 | 1717 | var pagenoEle = dataForm.find("[name='pageNo']"); 1718 | if (cacheData[tableid]["pageNo"] != pagenoEle.val() 1719 | && Validate.integer.test(pagenoEle.val())) { 1720 | fldeChk(tableid,pagenoEle.val()); 1721 | if(cacheStaticTable[tableid]){ 1722 | staticPagination(tableid); 1723 | }else{ 1724 | this.load(tableid); 1725 | } 1726 | } 1727 | }, 1728 | numgoto : function(tableid, e) { 1729 | var dataForm = $("form").has("[id='" + tableid + "']"); 1730 | /* 1731 | * 提交分页数据验证 1732 | */ 1733 | var pagenoEle = dataForm.find("[name='pageNo']"); 1734 | pagenoEle.val($(e.target).text()); 1735 | //当前页不允许点击 1736 | // if (cacheData[tableid]["pageNo"] != dataForm.find( 1737 | // "[name='pageNo']").val()) { 1738 | fldeChk(tableid,pagenoEle.val()); 1739 | if(cacheStaticTable[tableid]){ 1740 | staticPagination(tableid); 1741 | }else{ 1742 | this.load(tableid); 1743 | } 1744 | // } 1745 | }, 1746 | go : function(tableid, pagenum, row) { 1747 | var dataForm = $("form").has("[id='" + tableid + "']"); 1748 | if (dataForm && Validate.integer.test(pagenum)) { 1749 | pagenum = parseInt(pagenum); 1750 | if (pagenum <= 0) { 1751 | pagenum = 1; 1752 | } 1753 | if (!row || !Validate.integer.test(row)) { 1754 | row = cacheData[tableid]["rowPerPage"]; 1755 | } 1756 | var maxPage = Math 1757 | .floor((cacheData[tableid]["totalCount"] - 1) / row 1758 | + 1); 1759 | if (pagenum > maxPage) { 1760 | pagenum = maxPage; 1761 | } 1762 | var pagenoEle = dataForm.find("[name='pageNo']"); 1763 | if (pagenoEle.val()) { 1764 | pagenoEle.val(pagenum); 1765 | } else { 1766 | dataForm.append(''); 1768 | } 1769 | var rowPerPageEle = dataForm.find("[name='rowPerPage']"); 1770 | if (rowPerPageEle.val()) { 1771 | rowPerPageEle.val(row); 1772 | } else { 1773 | dataForm.append(''); 1775 | } 1776 | dataForm.find("[name='rowPerPage']").val(row); 1777 | if (cacheData[tableid]["pageNo"] != pagenum) { 1778 | if(cacheStaticTable[tableid]){ 1779 | staticPagination(tableid); 1780 | }else{ 1781 | this.load(tableid); 1782 | } 1783 | } 1784 | } 1785 | }, 1786 | checkAll : function(o, name) { 1787 | var cs = o.checked; 1788 | if (cs) { 1789 | $(o.form).find("[name='" + name + "']").each(function() { 1790 | this.checked = true; 1791 | }); 1792 | } else { 1793 | $(o.form).find("[name='" + name + "']").each(function() { 1794 | this.checked = false; 1795 | }); 1796 | }; 1797 | }, 1798 | /** 1799 | * 设置排序指示的符号 1800 | * @param orderParams 排序外观参数,包括order_default、order_up、order_down三个参数 1801 | * @param datatableid 可选,指定具体设置外观的表格id 1802 | */ 1803 | setOrder: function(orderParams,datatableid){ 1804 | if(datatableid){ 1805 | orderCache[datatableid]={}; 1806 | orderCache[datatableid].order_default=orderParams.order_default; 1807 | orderCache[datatableid].order_up=orderParams.order_up; 1808 | orderCache[datatableid].order_down=orderParams.order_down; 1809 | }else{ 1810 | order_default=orderParams.order_default; 1811 | order_up=orderParams.order_up; 1812 | order_down=orderParams.order_down; 1813 | } 1814 | 1815 | dtSort(); 1816 | }, 1817 | /** 1818 | * 为Datatable的行注册各种处理事件 1819 | * @param events 注册的事件处理列表 1820 | * @param datatableid 可选,将事件列表注册到id指定的DataTable 1821 | */ 1822 | setRowEvent: function(events, datatableid){ 1823 | if(datatableid){ 1824 | rowEventsDT[datatableid]=events; 1825 | }else{ 1826 | rowEvents=events; 1827 | } 1828 | 1829 | $(".datatable").each(function(){ 1830 | addRowEvent($(this)); 1831 | }); 1832 | 1833 | }, 1834 | init:function(){ 1835 | $(".pagego").hover(function() { 1836 | $(this).addClass("pageGoHover"); 1837 | }, function() { 1838 | $(this).removeClass("pageGoHover"); 1839 | }); 1840 | $(".datatable").find("tr:eq(1)").css("visibility", "hidden"); 1841 | // 隐藏数据行 1842 | $(".easydatatable").each(function() { 1843 | var tableid = $(this).attr("id"); 1844 | if (!cacheInit[tableid]) { 1845 | if (tableid) { 1846 | DataTable.load(tableid); 1847 | } 1848 | } 1849 | }); 1850 | 1851 | $("[check]").on("click",function(){ 1852 | DataTable.checkAll(this,$(this).attr("check")); 1853 | }); 1854 | 1855 | //动态搜索 1856 | $(".data_search").each(function(){ 1857 | var tableid = $(this.form).find("table[id]").attr("id"); 1858 | var o = $(this); 1859 | o.off("click"); 1860 | o.on("click", function() { 1861 | if (tableid) { 1862 | DataTable.load(tableid); 1863 | } 1864 | }); 1865 | }); 1866 | 1867 | /** 1868 | * 当前页的静态数据搜索 1869 | * @param o 表格对象 1870 | * @param param 参数 or 查询方式; all 查询范围 1871 | * */ 1872 | function search(o,param){ 1873 | var tableid = $(o.form).find("table[id]").attr("id"); 1874 | o = $(o); 1875 | o.off("click"); 1876 | o.on("click", function() { 1877 | if (tableid) { 1878 | if(param.all){//全部静态数据搜索 1879 | param.or?DataTable.staticSearchAll(tableid,true):DataTable.staticSearchAll(tableid); 1880 | }else{//当前页的静态数据搜索 1881 | param.or?DataTable.staticSearch(tableid,true):DataTable.staticSearch(tableid); 1882 | } 1883 | } 1884 | 1885 | }); 1886 | } 1887 | 1888 | //search AND 1889 | $(".data_static_search").each(function() { 1890 | search(this,{}); 1891 | }); 1892 | //search OR 1893 | $(".data_static_search_or").each(function() { 1894 | search(this,{"or":true}); 1895 | }); 1896 | //searchAll AND 1897 | $(".data_static_searchAll").each(function() { 1898 | search(this,{"all":true}); 1899 | }); 1900 | //searchAll OR 1901 | $(".data_static_searchAll_or").each(function() { 1902 | search(this,{"or":true,"all":true}); 1903 | }); 1904 | //sort 1905 | dtSort(); 1906 | 1907 | } 1908 | }; 1909 | 1910 | window.DataTable = DataTable; 1911 | 1912 | })(window); 1913 | 1914 | -------------------------------------------------------------------------------- /doc/readme-zh_CN.md: -------------------------------------------------------------------------------- 1 | # EasyDataTable AJAX分页插件使用手册 2 | 3 | > 说明:EasyDataTable与DataTable插件为同一插件。在早期DataTable对应英文版,EasyDataTable对应中文版,在`1.10.0`和`2.3.0`版本后,通过语言文件控制,不再按地区区分下载。 4 | 5 | 使用Ajax分页可以提高数据加载和显示速度,减少网络流量,提升客户体验度;同时能够只刷新局部,解决当页面上有多个数据显示表格区域时,传统的分页方式会导致页面全部刷新。 6 | 7 | EasyDataTable AJAX分页插件是基于jQuery最好的纯Ajax分页插件,支持HTML增强和JS编程两种途径实现分页,最大的特点是:简单、易用、灵活。支持多种数据源加载(服务器动态数据源,静态数据源,JSON文件数据源);自带分页标签;支持自定义分页;自定义Loading提示;数据表格UI可自定义;支持列点击排序,支持静态数据排序;支持条件动态查询,静态数据条件筛选查询,支持范围、方式及模式支持,内置8种静态数据查询匹配模式;内置EasyDataTable表达式语言、事件支持,能够通过JavaScript编程增强分页。 8 | 9 | **兼容性**:EasyDataTable完全兼容IE6及以上版本、Firefox、Chrome、Safari、Opera等各内核(Trident、Gecko、Webkit、Presto)浏览器,并兼容多平台及系统(PC,TabletPC,Mobile)。 10 | 11 | 与Ext等比较EasyDataTable的主要特点: 12 | 1. 轻量: EasyDataTable需要更少的资源加载,非常 **轻量级** 13 | 2. 易用: **HTML增强支持** ,几乎无需JS代码,全面封装,简单易用,JS零编程即可实现强大的Ajax分页功能 14 | 3. 灵活: 不受限制,自带表达式语言,事件支持,从UI到功能实现均可 **灵活自定义** 和扩展 15 | 4. 全面: 动态,静态**多种数据源加载**全面支持,并支持多种不同范围、方式、模式的静态数据筛选查询 16 | 17 | - **版本说明:** 18 | EasyDataTable目前支持两个版本 1.X 和 2.X 版本 19 | 2.X 增加了对静态数据源(JSON和Array格式数据列表)、JSON文件数据源的分页加载支持,并支持对以上静态数据进行筛选查询和排序。 20 | 21 | 22 | - **版本升级重要说明:** 23 | 24 | 由1.X 之前版本升级到 `1.10.0`(包括)以后版本,2.X 之前版本升级到 `2.3.0`(包括)以后版本,需要进行以下更换: 25 | 26 | 1. 通过引入相应独立的语言JS文件实现语言切换(无需独立下载英文版 DataTable 和中文版 EasyDataTable ) 27 | ```HTML 28 | <-- CSS --> 29 | 30 | 31 | 32 | 33 | ``` 34 | 如果需要增加其他语言可以参考语言文件,通过添加新的国际化语言文件实现。 35 | > 默认语言为英文,但由于语言文件内部执行了`DataTable.init()`函数完成DataTable自动初始化,所以如果不引入语言文件,则必须手动调用`DataTable.init()`函数来初始化DataTable。设计原因参考——《3、对Ajax分页表格进行数据初始化:EasyDataTable在基于Ajax加载内容的场景中使用特别说明》。 36 | 37 | 2. 如果使用了**自定义排序指示符号**,则以下代码需要进行更换 38 | - 全局自定义:默认修改所有DataTable对象的排序指示符 39 | 旧代码: 40 | ```JS 41 | DataTable.order_default=""; 42 | DataTable.order_up=""; 43 | DataTable.order_down=""; 44 | ``` 45 | 更改为: 46 | ```JS 47 | DataTable.setOrder({ 48 | order_default:"", 49 | order_up:"", 50 | order_down:"" 51 | }); 52 | ``` 53 | 54 | - 按DataTableID自定义:仅修改当前DataTableID对应的DataTable对象的排序指示符 55 | 旧代码: 56 | ```JS 57 | DataTable.sort["datatable,datatable2,datatable4"]={ 58 | order_default:"", 59 | order_up:"", 60 | order_down:"" 61 | }; 62 | ``` 63 | 更改为: 64 | ```JS 65 | DataTable.setOrder({ 66 | order_default:"", 67 | order_up:"", 68 | order_down:"" 69 | }, 70 | "datatable4"); 71 | ``` 72 | 73 | 3. 自定义分页,将分页内容定义在 `
`中,可以防止自定义的内容在渲染完成前显示 74 | ```HTML 75 |
76 |
77 | 78 |
79 |
91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | ``` 99 | 100 | 101 | 102 | ## 2、分页表格结构 103 | 104 | EasyDataTable的结构分为表单、EasyDataTable数据表格(表头行,数据展示行)、分页div三个部分,按照如下结构创建数据表格: 105 | ```HTML 106 | 107 |
108 | 109 | 110 | 111 | 112 | 113 | …… 114 | 115 | 116 | …… 117 | 118 |
119 | 120 | 121 |
122 | 123 |
124 | ``` 125 | ### 分页表格实例: 126 | ```HTML 127 | 128 |
129 | 130 |
131 | 132 | 133 | 134 | 135 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 151 | 152 | 155 | 156 | 157 | 158 | 163 | 164 |
136 | 137 | 138 | 数量编号姓名信息操作
148 | 149 | 150 | 153 | {datatableCount } 154 | No.{id}{name}{info} 159 | 查看 160 | 修改 161 | 删除 162 |
165 |
166 | 167 | 168 |
169 |
170 |
171 | ``` 172 | 173 | 174 | 175 | ## 3、对Ajax分页表格进行数据初始化 176 | 177 | EasyDataTable支持HTMl增强和JS两种方式实现分页表格的初始化。 178 | 179 | ### 3.1、方法一:html增强,使用easydatatable类样式 180 | 181 | 给表格添加`easydatatable`类样式进行初始化(表格必须有id) 182 | ```HTML 183 | 184 | ``` 185 | ### 3.2、方法二:JavaScript,使用 DataTable.load() 函数 186 | 187 | 使用 `DataTable.load( 表格id,参数信息) `函数对要进行Ajax分页的表格进行初始化 188 | **`DataTable.load( tableid [,easydataParameters] );`** 189 | 190 | 191 | 参数说明: 192 | `tableid`:必须参数,显示数据的表格id 193 | `easydataParameters`:可选参数,指定**EasyDataTable的初始化分页参数**信息,支持的参数 : 194 | ```JS 195 | { 196 | `pagetheme`: '分页主题', 197 | `loading`: '分页加载数据时,Loading提示的方式', 198 | `language`: '分页标签的语言', 199 | `start`: '数据开始加载事件处理函数', 200 | `end`: '数据结束加载事件处理函数', 201 | `row`: '初始每页加载显示数量' 202 | } 203 | ``` 204 | 205 | #### easydataParameters 初始化分页参数说明 206 | 207 | - #### pagetheme——可选,分页标签主题 208 | 支持两套可选分页主题,及自定义分页(值不区分大小写) 209 | 210 | `"FULL"`(完全主题,默认显示所有分页选项,默认值) 211 | ![FULL 主题图例](images/pagetheme_full.png "FULL 主题图例") 212 | 213 | `"SIMPLE"` (简单主题,不显示快速跳转页码) 214 | ![SIMPLE 主题图例](images/pagetheme_simple.png "SIMPLE 主题图例") 215 | 216 | `"NO"` (取消主题,使用自定义分页,参考第11章节《自定义分页》) 217 | 218 | **该参数支持HTML增强:** 219 | `pagetheme`参数也可通`分页div`的`pagetheme属性`设置。加载顺序为html、javascript,后加载的参数会覆盖前面的值,参考第10章节《分页主题设置》。 220 | 221 | 222 | 223 | - #### loading——可选,分页加载数据时Loading方式 224 | 225 | 由于Ajax程序在执行过程中并不刷新网页,所以在执行分页等操作时,Ajax应用应当当给客户给出相应加载执行的提示和反馈,否则用户可能会认为任务未执行或失败,影响体验度。 226 | 227 | EasyDataTable在分页加载时支持进行Loading配置,可选值为:`"default"`、`"show"`、`"none"`、`"hide"`或`"任意值"`。(值不区分大小写) 228 | 229 | `"default"`: 默认值,分页加载时禁用表格操作(禁用超链,按钮),数据显示为灰色 230 | 231 | `"show"`: 显示文字加载提示,分页加载时显示DataTable.loading_msg定义的loading提示内容(可修改)"数据正在读取中……" 232 | 233 | `"none"`: 隐藏数据展示行,分页加载时隐藏数据展示行的数据+单元格,显示完全为空白 234 | 235 | `"hide"`: 隐藏数据内容,分页加载时仅隐藏数据展示行的数据,保留显示单元格边框 236 | 237 | `"任意值"`:直接将该内容作为分页加载时提示内容(等同show方式),支持HTML内容 238 | 239 | 示例: 240 | ```JS 241 | loading:"

数据正在加载中……
" 242 | ``` 243 | **该参数支持HTML增强:** 244 | 245 | `loading`参数也可通过数据`表格的loading属性`设置。加载顺序为html、javascript,后加载的参数会覆盖前面的值。 246 | 247 | 248 | - #### language——可选,设置分页标签显示的语言 249 | 250 | 默认分页配置定义在`DataTable.default_lang`属性中,默认值为: 251 | ```JS 252 | DataTable.default_lang={ 253 | first:"首页", 254 | previous:"上一页", 255 | next:"下一页", 256 | last:"末页", 257 | totalCount:"共{0}条", 258 | totalPage:"共{0}页", 259 | rowPerPage:"每页显示{0}条" 260 | } 261 | ``` 262 | 可直接修改和重新定义该属性的值作为全局默认分页文字和语言。 263 | 也可根据需要在初始化参数中为指定数据表格重新定义分页语言,`{0}`为显示相应数据的占位符,必须存在。 264 | ```JS 265 | 289 | ``` 290 | 291 | 292 | - #### start——可选,设置每一次数据加载开始时的处理函数 293 | ```JS 294 | /* 295 | o:当前表格对象 296 | initFlag:true代表第一次加载数据(初始化表格),false代表分页加载 297 | */ 298 | "start":function(o,initFlag){ 299 | if(initFlag){ //第一次加载(未初始化) 300 | console.info('init start...'); 301 | }else{ 302 | console.info('load start...'); 303 | } 304 | } 305 | ``` 306 | 307 | - #### end——可选,设置每一次数据加载结束时的处理函数 308 | ```JS 309 | /* 310 | o:当前表格对象 311 | initFlag:true代表第一次加载数据(初始化表格),false代表分页加载 312 | */ 313 | "end":function(o,initFlag){ 314 | if(initFlag){ //第一次加载(未初始化) 315 | console.info('init end...'); 316 | }else{ 317 | console.info('load end...'); 318 | } 319 | } 320 | ``` 321 | - #### row——可选,设置初始分页加载的条数 322 | 323 | 在初始化参数中指定默认分页加载的数据条数。如不设置该参数,将使用`DataTable.default_row`属性的值默认值5(可修改)。 324 | 325 | **该参数支持HTML增强:** 326 | row参数也可通过`分页div`的`row属性`设置,加载顺序为html、javascript,后加载的参数会覆盖前面的值。 327 | 328 | 329 | 330 | #### EasyDataTable在基于Ajax加载内容的场景中使用特别说明: 331 | __________ 332 | 333 | EasyDataTable会在`document.onready`后自动调用`DataTable.init();`,完成表格相关的各种初始化工作(**该代码在语言JS文件内部,所以一般语言文件必须加载**)。 334 | 335 | 但由于存在一些基于Ajax加载内容的特殊使用场景:如果在一个文档中通过Ajax请求来获得页面,该页面包含EasyDataTable 相关JS文件的加载,那么JavaScript代码会在该页面的document加载完后按顺序执行,由于外部document已经ready完成,所以在语言文件内部默认注册的onready是无效的。这导致在引入EasyDataTable JS文件后修改DataTable的全局参数,由于晚于语言文件中的初始化函数执行,导致设置不能生效。 336 | 337 | 所以,在遇到这样的场景,需要在在基于Ajax加载内容的场景中设置参数时,为了解决Ajax加载页面时的不足,有两种解决方法: 338 | 339 | 1. 注释语言文件中的`DataTable.init();`代码,关闭自动初始化。在JS文件加载完成,设置参数后,手动调用`DataTable.init();`完成初始化。 340 | ```HTML 341 | 342 | 343 | 344 | 345 | 351 | ``` 352 | 353 | 2. 按如下顺序控制:先加载EasyDataTable.js文件;执行设置参数代码;最后加载语言文件。 354 | ```HTML 355 | 356 | 357 | 358 | 362 | 363 | 364 | ``` 365 | 366 | 367 | ## 4、EasyDataTable Expression Language 表达式语言使用 368 | 369 | ### 4.1 EasyDataTable Property Expression 属性表达式 `{数据属性}` 370 | 371 | **属性表达式用于在数据展示行,显示指定的属性值。** 372 | 373 | 在属性表达式中可以直接引用数据属性来获得指定属性的数据。并支持各种数学、比较等JavaScript基本运算符进行运算。 374 | ```JS 375 | {id} {name} 376 | ``` 377 | ### 4.2 EasyDataTable Statement Expression 语句表达式 `%{表达式语句}%` 378 | 379 | **语句表达式用于在数据展示行,使用编程语句进行控制编程。** 380 | 381 | 在语句表达式中支持使用JavaScript编写表达式代码;支持直接调用数据属性;也支持使用EasyDataTable属性表达式(必须使用引号定义在字符串中使用)。 382 | 语句表达式执行的结果必须使用EasyDataTable语句表达式标准输出方法输出: **`DataTable.out("内容");`** 383 | 384 | JS脚本中的<、>等特殊符号,也可使用对应字符实体代替。 385 | 386 | ```HTML 387 | <%-- 388 | 支持JavaScript语言编写表达式。 389 | 属性名:以变量方式引用和处理 390 | EasyDataTable属性表达式:必须使用引号定义在字符串中使用 391 | --%> 392 | %{ 393 | var res=name+" {name}"; 394 | DataTable.out(res); 395 | }% 396 | 397 | %{ 398 | if(id%2==0){ 399 | var op='查看  '; 400 | op+='修改'; 401 | 402 | DataTable.out(op); 403 | }else{ 404 | DataTable.out('查看  修改  删除'); 405 | } 406 | }% 407 | ``` 408 | **注意:** 409 | 由于EasyDataTable语句表达式是获得整段执行代码的最终结果,所以如下代码并不会执行10次输出: 410 | ```JS 411 | %{ 412 | for(var i=0;i<=10;i++){ 413 | DataTable.out(i); 414 | } 415 | }% 416 | ``` 417 | 如果希望输出10次,必须使用变量保存循环结果,最后输出: 418 | ```JS 419 | %{ 420 | var res=""; 421 | for(var i=0;i<=10;i++){ 422 | res+=i; 423 | } 424 | 425 | DataTable.out(res); 426 | }% 427 | ``` 428 | 429 | 430 | ## 5、EasyDataTable内置数据属性 431 | **EasyDataTable内置了与数据及分页相关的内置属性,可在数据展示行或分页标签行直接使用。** 432 | 433 | **仅在数据展示行有效:** 434 | `datatableIndex`:可获得数据在当前页的索引 435 | `datatableCount`:可获得数据在当前页的个数 436 | `key`:Map数据集合时可用来获取数据对于的键 437 | 438 | **数据展示行、分页标签均可使用:** 439 | `pageNo`:当前页 440 | `maxPage`:总页数 441 | `rowPerPage`:每页显示条数 442 | `totalCount`:数据总条数 443 | `sort`:排序字段 444 | `order`:排序方式,`desc`或`asc` 445 | 446 | **例如:** 447 | 当前数据在所有数据中的索引:`{datatableIndex+(pageNo-1)*rowPerPage} ` 448 | 当前数据在所有数据中的个数:`{datatableCount+(pageNo-1)*rowPerPage}` 449 | 450 | 451 | 452 | 453 | 454 | 455 | 456 | ## 6、排序支持 457 | 在表头行需要排序字段对应的单元格上添加`sort="排序字段名称"`属性即可。 458 | ```HTML 459 | 460 | 461 | 462 | 463 | 464 | 465 | 466 | 467 | 468 | ``` 469 | 可排序列会显示排序箭头。点击即可发送服务器需要的排序信息:排序字段sort(sort的值)和排序方式order(asc或desc)到服务器。 470 | 服务器接收并处理后返回新数据即可实现升序降序切换。 471 | 472 | 服务器端通过order和sort参数名获取排序信息。 473 | ```JAVA 474 | String sort = request.getParameter("sort"); 475 | String order = request.getParameter("order"); 476 | ``` 477 | ### 刷新表格: 478 | 使用`DataTable.reload(‘tableid’);`可以刷新指定数据表格,恢复到没有排序状态。 479 | ```HTML 480 |
刷新
481 | ``` 482 | 483 | ### 排序指示符号自定义 484 | 485 | EasyDataTable对于可排序的列在外观上通过**排序指示符号**来进行排序提醒。默认有三种符号: 486 | `order_default`:表示可进行点击排序指示符号,显示上下箭头↑↓(`↑↓`) 487 | `order_up`:升序时的指示符号,显示↑(`↑`) 488 | `order_down`:降序时的指示符号,显示↓(`↓`) 489 | 490 | EasyDataTable支持通过方法修改排序指示符号的外观: 491 | ```JS 492 | /** 493 | * 设置排序指示的符号 494 | * @param orderParams 排序外观参数,包括 495 | * order_default:可排序列的默认指示符号 496 | * order_up:升序时的指示符号 497 | * order_down:降序时的指示符号 498 | * 三个参数 499 | * @param datatableid 可选,指定具体设置外观的表格id 500 | */ 501 | setOrder: function(orderParams,datatableid) 502 | ``` 503 | 504 | 505 | **1. 全局自定义:默认修改所有DataTable对象的排序指示符** 506 | 507 | ```JS 508 | DataTable.setOrder({ 509 | //可排序列的默认指示符号 510 | order_default:"", 511 | //可排序列的升序指示符号 512 | order_up:"", 513 | //可排序列的降序指示符号 514 | order_down:"" 515 | }); 516 | ``` 517 | 518 | 519 | **2. 按DataTableID自定义:仅修改当前DataTableID对应的DataTable对象的排序指示符** 520 | ```JS 521 | DataTable.setOrder({ 522 | //可排序列的默认指示符号 523 | order_default:"", 524 | //可排序列的升序指示符号 525 | order_up:"", 526 | //可排序列的降序指示符号 527 | order_down:"" 528 | }, 529 | "datatable4"); 530 | ``` 531 | 532 | 533 | 534 | ## 7、Row行事件注册 535 | 536 | 为DataTable的数据行注册事件。 537 | ```JS 538 | /** 539 | * 为Datatable的行注册各种处理事件 540 | * @param events 注册的事件处理列表 {事件名: 事件处理函数, ... } 541 | * @param datatableid 可选,将事件列表注册到id指定的DataTable 542 | */ 543 | DataTable.setRowEvent(events[, datatableid]) 544 | ``` 545 | 546 | 示例: 547 | ```JS 548 | //注册给所有DataTable 549 | DataTable.setRowEvent({ 550 | // 事件名:事件处理函数 551 | click:function(event){ 552 | console.info($(this)); 553 | }, 554 | mouseover:function(event){ 555 | console.info($(this)); 556 | } 557 | }); 558 | 559 | //注册给id指定的DataTable 560 | DataTable.setRowEvent({ 561 | // 事件名:事件处理函数 562 | click:function(event){ 563 | console.info($(this)); 564 | }, 565 | mouseover:function(event){ 566 | console.info($(this)); 567 | } 568 | }, "datatable4"); 569 | ``` 570 | 571 | ## 8、服务器端数据要求 572 | 573 | **EasyDataTable可以自动解析服务器端返回的JSON结果,并实现分页。** 574 | 575 | 576 | - **服务器端必须输出如下名称的分页JSON结果:** 577 | `data`:数据集合,支持List和Map集合(内置属性key可获取Map的键,Map的值无需使用value前缀)对应的JSON集合,JSON集合中的数据支持实体对象和数组两种方式。 578 | `pageNo`:当前第几页,数字 579 | `rowPerPage`:每页显示条数,数字 580 | `totalCount`:数据总条数,数字 581 | 可选参数: 582 | `[sort]`:排序字段 583 | `[order]`:排序方式,desc或asc 584 | 585 | 586 | - **data数据集合支持的两种方式:** 587 | 588 | 1、实体对象数据集合: 589 | ```JS 590 | "data" : [ 591 | { 592 | "id" : 1, 593 | "name" : "USER_1", 594 | "info" : "INFO_1" 595 | }, { 596 | "id" : 2, 597 | "name" : "USER_2", 598 | "info" : "INFO_2" 599 | }, { 600 | "id" : 3, 601 | "name" : "USER_3", 602 | "info" : "INFO_3" 603 | }, { 604 | "id" : 4, 605 | "name" : "USER_4", 606 | "info" : "INFO_4" 607 | }, { 608 | "id" : 5, 609 | "name" : "USER_5", 610 | "info" : "INFO_5" 611 | } 612 | ] 613 | ``` 614 | 2、数组对象数据集合: 615 | ```JS 616 | "data":[ 617 | [1,"Jay","I'm Jay"], 618 | [2,"Jolin","I'm Jolin"], 619 | [3,"Sheldon","I'm Sheldon"], 620 | [4,"Penny","I'm Penny"], 621 | [5,"Amy","I'm Amy"], 622 | [6,"Jay2","I'm Jay"], 623 | [7,"Jolin2","I'm Jolin"], 624 | [8,"Sheldon2","I'm Sheldon"], 625 | [9,"Penny2","I'm Penny"], 626 | [10,"Amy2","I'm Amy"], 627 | [11,"Jay3","I'm Jay"], 628 | [12,"Jolin3","I'm Jolin"], 629 | [13,"Sheldon3","I'm Sheldon"], 630 | [14,"Penny3","I'm Penny"], 631 | [15,"Amy3","I'm Amy"] 632 | ] 633 | ``` 634 | **注意:使用数组对象数据集合从数组中获取数据时使用`[index]`代表指定的数据属性名称,`index`为数据在数组中的数字索引,在EasyDataTable的属性表达式和语句表达式中均可使用。** 635 | **例如`[0]`,代表第一列数据属性;`{[0]}`代表获取第一列数据属性的值** 636 | 637 | 638 | 639 | - **如果服务器端分页参数封装在PageBean中,如:** 640 | ```JAVA 641 | public class PageBean { 642 | private List data; 643 | private int pageNo; 644 | private int rowPerPage; 645 | private int totalCount; 646 | //setters&getters …… 647 | } 648 | ``` 649 | 例如,服务器端返输出的JSON对象中PageBean名称为`pb`,则在数据表格`table标签`上加入`value`属性,指定分页对象的JSON名称`pb`: 650 | ```HTML 651 |
countindex{index+1}idnameinfo操作
652 | ``` 653 | 654 | 655 | 656 | 657 | 658 | ## 9、刷新指定数据表格 659 | ```JS 660 | DataTable.reload(“tableId”); //取消排序效果,刷新表格,重新加载数据 661 | ``` 662 | 663 | 664 | 665 | 666 | 667 | ## 10、默认分页条数设置 668 | 669 | 在**初始化分页参数**中使用`row参数`可以指定默认的分页条数。如果不设置该参数,将使用`DataTable.default_row`属性的值默认值5(可修改)。 670 | 671 | `row属性`同时支持在分页div标签中使用HTML增强: 672 | ```HTML 673 |
674 | 675 |
676 | ``` 677 | 678 | 679 | 680 | 681 | ## 11、分页主题设置 682 | 683 | DataTable内置分页实现,并提供了两套主题: 684 | 685 | `FULL`(完全主题,默认显示所有分页选项,默认值) 686 | ![FULL 主题图例](images/pagetheme_full.png "FULL 主题图例") 687 | 688 | 689 | `SIMPLE` (简单主题,不显示快速跳转页码) 690 | ![SIMPLE 主题图例](images/pagetheme_simple.png "SIMPLE 主题图例") 691 | 692 | 693 | ### 11.1、使用JavaScript指定分页主题 694 | ```JS 695 | DataTable.load("datatable",{ 696 | "pagetheme":'SIMPLE' 697 | }); 698 | ``` 699 | 700 | ### 11.2、在分页DIV标签上指定分页主题 701 | ```HTML 702 |
703 | 704 |
705 | ``` 706 | ### 11.3、取消分页和主题 707 | 708 | 使用display:none隐藏,或直接删除分页标签部分即可。 709 | ```HTML 710 |
827 | 828 | ``` 829 | 830 | 831 | 832 | 833 | ## 16、静态筛选查询(2.X) 834 | 835 | **EasyDataTable支持对静态数据进行筛选查询,并具有以下三大特性:** 836 | 837 | 1. **查询范围**:支持对All(全部静态数据)和NowPage(当前页的静态数据)两种范围的静态数据筛选查询。 838 | 839 | 2. **查询方式**:支持多条件筛选时按 `AND` 或 `OR` 方式实现数据筛选。 840 | 841 | 3. **查询模式**:内置8种MatchMode(查询匹配模式)支持,每个筛选表单项均可独立配置MatchMode。 842 | 843 | **EasyDataTable支持的8种MatchMode查询匹配模式名称和作用:** 844 | 845 | extra:完全匹配 846 | extra_i:完全匹配,并忽略大小写 847 | 848 | like:模糊匹配 849 | like_i:模糊匹配,并忽略大小写 850 | 851 | sql:SQL通配符匹配(支持百分号`%`通配符,匹配任意字符;支持下划线`_`通配符,匹配单个字符;支持`[0-9]`、`[A-Z]`、`[a-z]`、`[0-9A-Za-z]`等范围通配符,匹配单个字符范围) 852 | sql_i:SQL通配符匹配,并忽略大小写 853 | 854 | reg:正则表达式匹配 855 | reg_i:正则表达匹配 ,并忽略大小写 856 | 857 | 858 | ###为表单元素指定MatchMode(查询匹配模式):### 859 | EasyDataTable通过8种数据查询匹配模式MatchMode,为使用者提供了全方位的查询支持;同时支持为每个表单选项独立指定不同的查询匹配模式,极大的增强了筛选的灵活性。 860 | 861 | **使用方法:** 862 | 使用HTML增强,在相应文本框上添加`mode`属性,并将值指定为EasyDataTable支持的`MathMode名称`即可。 863 | ```HTML 864 | username: 865 | 866 | 867 | userinfo: 868 | 869 | ``` 870 | 默认匹配模式说明:如果没有为表单元素指定`mode`属性,则按**`like_i`(忽略大小写的模糊匹配)**处理,默认匹配模式可通过`DataTable.default_matchMode='like_i'`修改。 871 | 872 | 873 | 874 | 875 | ###静态数据筛选查询两种范围:### 876 | 877 | 1. **NowPage**——当前页面数据范围的数据筛选查询:查询当前页面符合条件的数据(同时支持对动态数据源和静态数据源进行NowPage筛选) 878 | 879 | 2. **All**——全部静态数据范围的数据筛选查询:查询加载的所有静态数据中符合条件的数据(仅支持对静态数据源进行All筛选) 880 | 881 | ###实现数据筛选的两种方法:### 882 | 883 | 884 | **方法一:使用HTML增强** 885 | 886 | NowPage当前页面静态数据范围的数据筛选查询:给搜索按钮添加`static_data_search[_or]`类样式: 887 | 888 | `data_static_search` 支持多条件的 AND 方式查询。 889 | ```HTML 890 | 891 | ``` 892 | `data_static_search_or` 支持多条件的 OR 方式查询。 893 | ```HTML 894 | 895 | ``` 896 | ALL全部静态数据范围的数据筛选查询:给搜索按钮添加`static_data_searchAll[_or]`类样式: 897 | 898 | `data_static_searchAll` 支持多条件的 AND 方式查询。 899 | ```HTML 900 | 901 | ``` 902 | 903 | `data_static_searchAll_or` 支持多条件的 OR 方式查询。 904 | 905 | ```HTML 906 | 907 | ``` 908 | 909 | **方法二:使用内置函数实现静态筛选:** 910 | 911 | 912 | NowPage当前页面静态数据范围的数据筛选查询:`DataTable.staticSearch('tableid' [,true] )` 913 | 914 | 如果第二个参数为true,则按 OR 方式查询;否则按 AND 方式查询。 915 | 916 | ```HTML 917 | 918 | ``` 919 | 920 | ALL全部静态数据范围的数据筛选查询:`DataTable.staticSearchAll('tableid' [,true] )` 921 | 922 | 923 | 如果第二个参数为true,则按 OR 方式查询;否则按 AND 方式查询。 924 | ```HTML 925 | 926 | ``` 927 | 928 | 929 | 930 | 931 | 932 | ## 17、表格AJAX分页实例 933 | 934 | ### 17.1、默认FULL分页主题 + 复选框 + index,count内置属性使用 935 | ```HTML 936 | 937 |
938 |
idname
939 | 940 | 941 | 943 | 944 | 945 | 946 | 947 | 948 | 949 | 950 | 951 | 952 | 953 | 954 | 955 | 956 | 957 | 958 | 959 | 960 | 961 | 962 | 964 | 965 |
942 | countindex{index+1}idnameinfooperation
{datatableCount }{datatableIndex }{datatableIndex+1 }No.{id}{name}{info}show edit delete
966 | 967 |
968 | 969 | ``` 970 | 971 | ### 17.2、指定分页主题SIMPLE + Loading="show" + 带复选框 + 排序属性 972 | ```HTML 973 | 979 | 980 |
981 |
982 | 983 | 984 | 985 | 986 | 987 | 988 | 989 | 990 | 991 | 992 | 993 | 994 | 995 | 996 | 997 | 998 | 999 | 1000 | 1001 | 1002 | 1007 | 1009 | 1010 |
countidnameinfosort、orderoperation
{datatableCount }No.{id}{name}{info} 1003 | sort={sort}
1004 | order={order} 1005 | 1006 |
show edit delete
1011 |
1012 |
1013 |
1014 | ``` 1015 | 1016 | ### 17.3、判断语句DataTable表达式使用 + loading="none" + 默认每页10条 1017 | ```HTML 1018 |
1019 |
1020 | 1021 | 1022 | 1023 | 1026 | 1027 | 1028 | 1029 | 1030 | 1031 | 1032 | 1033 | 1034 | 1035 | 1036 | 1037 | 1038 | 1041 | 1042 | 1043 | 1044 | 1045 | 1046 | 1047 | 1061 | 1062 |
1024 | 1025 | countindex{index+1}idnameinfooperation
1039 | 1040 | {datatableCount+(pageNo-1)*rowPerPage} {datatableIndex+(pageNo-1)*rowPerPage}{datatableIndex+(pageNo-1)*rowPerPage+1}No.{id}{name}{info} 1048 | 1049 | %{ 1050 | if(id%2==0){ 1051 | var op='show  '; 1052 | op+='edit'; 1053 | DataTable.out(op); 1054 | }else{ 1055 | DataTable.out('show  edit  delete'); 1056 | } 1057 | }% 1058 | 1059 | 1060 |
1063 |
1064 |
1065 | 1066 |
1067 |
1068 | ``` 1069 | 1070 | 1071 | ### 17.4、带start和end数据加载事件处理函数的分页 + 自定义排序指示符 1072 | ```HTML 1073 | 1110 | 1111 | 1112 |
1113 | 1114 | 1118 |
1119 | 1120 | 1121 | 1123 | 1124 | 1125 | 1126 | 1127 | 1128 | 1129 | 1130 | 1131 | 1132 | 1133 | 1135 | 1136 | 1137 | 1138 | 1139 | 1144 | 1147 | 1148 |
1122 | countPerTotalidnameinfosort、orderoperation
1134 | {datatableCount+(pageNo-1)*rowPerPage}No.{id}{name}{info} 1140 | sort={sort}
1141 | order={order} 1142 | 1143 |
show edit delete 1146 |
1149 |
1150 |
1151 | 1152 |
1153 | ``` 1154 | 1155 | 1156 | ### 17.5 取消分页标签 1157 | ```HTML 1158 |
1159 |
1160 | 1161 | 1162 | 1165 | 1166 | 1167 | 1168 | 1169 | 1170 | 1171 | 1172 | 1173 | 1174 | 1177 | 1180 | 1181 | 1182 | 1183 | 1188 | 1189 |
1164 | countidnameinfo操作
1176 | 1178 | {datatableCount} 1179 | No.{id}{name}{info}查看 修改 删除 1187 |
1190 |
1191 | 1194 |
1195 | ``` 1196 | 1197 | 1198 | ### 17.6、自定义分页1 1199 | ```HTML 1200 |
1201 |
1202 | 1203 | 1204 | 1206 | 1207 | 1208 | 1209 | 1210 | 1211 | 1212 | 1213 | 1214 | 1215 | 1216 | 1217 | 1218 | 1219 | 1220 | 1222 | 1223 |
1205 | pageNoidnameinfo操作
{pageNo}No.{id}{name}{info}查看 修改 删除
1224 |
1225 |
1227 | 当前第{pageNo}页/共{maxPage}页  每页{rowPerPage}条/共{totalCount}条 {order} {sort}    首页   上一页   下一页   末页 1232 | 1233 |
1234 |
1235 | ``` 1236 | 1237 | 1238 | ### 17.7、自定义分页2 1239 | ```HTML 1240 |
1241 |
1242 | 1243 | 1244 | 1245 | 1246 | 1247 | 1248 | 1249 | 1250 | 1251 | 1252 | 1253 | 1254 | 1255 | 1256 | 1257 | 1258 | 1259 | 1261 | 1262 |
pageNoidnameinfo操作
{pageNo}No.{id}{name}{info}查看 修改 删除
1263 |
1264 |
1266 | 当前第{pageNo}页/共{maxPage}页 1267 | 每页{rowPerPage}条/共{totalCount}条 {order} {sort} 1272 |
1273 |
1274 | ``` 1275 | 1276 | 1277 | ### 17.8、带搜索条件分页 + loading="hide" 1278 | ```HTML 1279 | DataTable.load("datatable8", { 1280 | "loading" : "hide" 1281 | }); 1282 | 1283 | 1284 |
1285 |
1286 | username: 1287 | userinfo: 1288 | 1289 | 1290 | 1291 | 1292 |
1293 |
1294 | 1295 | 1296 | 1297 | 1298 | 1299 | 1300 | 1301 | 1302 | 1303 | 1304 | 1305 | 1306 | 1307 | 1308 | 1309 | 1311 | 1312 | 1313 | 1314 | 1315 | 1316 | 1322 | 1323 |
countconditionidnameinfooperation
1310 | {datatableCount+(pageNo-1)*rowPerPage}{user.name},{user.info}No.{id}{name}{info} 1317 | %{ if(id%2==0){ DataTable.out('show  edit'); }else{ 1319 | DataTable.out('show  edit  delete'); } }%
1324 |
1325 |
1326 |
1327 | ``` 1328 | 1329 | ### 17.9、 动态数据源加载 + NowPage范围静态数据筛选查询排序 + 默认like_i查询匹配模式(2.X) 1330 | ```HTML 1331 |
1332 |
1333 | username: 1334 | userinfo: 1335 |

1336 |
NowPage当前页面数据范围静态筛选(同时支持动态数据源和静态数据源页面筛选)
1337 |
1338 | 1339 | 1340 | 1341 | 1342 | 1343 | 1344 | 1345 | 1346 |
1347 |
1348 | 1349 | 1350 | 1351 | 1353 | 1354 | 1355 | 1356 | 1357 | 1358 | 1359 | 1360 | 1361 | 1362 | 1363 | 1364 | 1366 | 1367 | 1368 | 1369 | 1370 | 1371 | 1377 | 1378 |
1352 | countindexidnameinfooperation
1365 | {datatableCount+(pageNo-1)*rowPerPage}{datatableIndex+(pageNo-1)*rowPerPage}No.{id}{name}{info} 1372 | %{ if(id%2==0){ DataTable.out('show  edit'); }else{ 1374 | DataTable.out('show  edit  delete'); } }%
1379 |
1380 |
1381 |
1382 | ``` 1383 | 1384 | ### 17.10、JSON静态数据源加载 + NowPage范围静态数据筛选查询排序 + 无分页 (2.X) 1385 | 1386 | ```HTML 1387 | 1520 | 1521 | 1522 |
1523 |
1524 | username: 1525 | userinfo: 1526 |

1527 |
NowPage当前页面数据范围静态筛选(同时支持动态数据源和静态数据源页面筛选)
1528 |
1529 | 1530 | 1531 | 1532 | 1533 | 1534 | 1535 | 1536 | 1537 |
1538 |
1539 | 1540 | 1541 | 1542 | 1544 | 1545 | 1546 | 1547 | 1548 | 1549 | 1550 | 1551 | 1552 | 1553 | 1554 | 1555 | 1557 | 1558 | 1559 | 1560 | 1561 | 1562 | 1568 | 1569 |
1543 | countindexidnameinfooperation
1556 | {datatableCount+(pageNo-1)*rowPerPage}{datatableIndex+(pageNo-1)*rowPerPage}No.{id}{name}{info} 1563 | %{ if(id%2==0){ DataTable.out('show  edit'); }else{ 1565 | DataTable.out('show  edit  delete'); } }%
1570 |
1571 |
1572 |
1573 | ``` 1574 | 1575 | 1576 | ### 17.11、JSON文件数据源加载 + All范围静态数据筛选查询排序 (2.X) 1577 | ```HTML 1578 | 1583 | 1584 | 1585 |
1586 |
1587 | username( sql_i 模式): 1588 | userinfo( like_i 模式): 1589 |

1590 |
All当前页面数据范围静态筛选(仅支持静态数据源页面筛选)
1591 |
1592 | 1593 | 1594 | 1595 | 1596 | 1597 | 1598 | 1599 |
1600 |
1601 | 1602 | 1603 | 1604 | 1606 | 1607 | 1608 | 1609 | 1610 | 1611 | 1612 | 1613 | 1614 | 1615 | 1616 | 1617 | 1619 | 1620 | 1621 | 1622 | 1623 | 1624 | 1630 | 1631 |
1605 | countindexidnameinfooperation
1618 | {datatableCount+(pageNo-1)*rowPerPage}{datatableIndex+(pageNo-1)*rowPerPage}No.{id}{name}{info} 1625 | %{ if(id%2==0){ DataTable.out('show  edit'); }else{ 1627 | DataTable.out('show  edit  delete'); } }%
1632 |
1633 |
1634 |
1635 | ``` 1636 | 1637 | 1638 | 1639 | ## 18、数组对象数据集合加载分页 1640 | 1641 | EasyDataTable在数据分页时除了支持使用JSON数据集合外,**还支持使用Array数组对象数据集合**。服务器动态数据源或静态数据源均可使用数组保存数据集合。例如: 1642 | ```JS 1643 | data:[ 1644 | [1,"Jay","I'm Jay"], 1645 | [2,"Jolin","I'm Jolin"], 1646 | [3,"Sheldon","I'm Sheldon"], 1647 | [4,"Penny","I'm Penny"], 1648 | [5,"Amy","I'm Amy"], 1649 | [6,"Jay2","I'm Jay"], 1650 | [7,"Jolin2","I'm Jolin"], 1651 | [8,"Sheldon2","I'm Sheldon"], 1652 | [9,"Penny2","I'm Penny"], 1653 | [10,"Amy2","I'm Amy"], 1654 | [11,"Jay3","I'm Jay"], 1655 | [12,"Jolin3","I'm Jolin"], 1656 | [13,"Sheldon3","I'm Sheldon"], 1657 | [14,"Penny3","I'm Penny"], 1658 | [15,"Amy3","I'm Amy"] 1659 | ] 1660 | ``` 1661 | 1662 | 1663 | **数组对象数据集合从数组中获取数据时使用`[index]`代表指定的数据属性名称,`index`为数据在数组中的数字索引,在EasyDataTable的属性表达式和语句表达式中均可使用。** 1664 | **例如`[0]`,代表第一列数据属性;`{[0]}`代表获取第一列数据属性的值** 1665 | 1666 | 1667 | ### 实例一:数组对象数据集合(服务器动态数据源) + NowPage范围数据筛选 (2.X) 1668 | 1669 | ```HTML 1670 |
1671 |
1672 | username( sql_i 模式): 1673 | userinfo( like_i 模式): 1674 |

1675 |
NowPage当前页面数据范围静态筛选(同时支持动态数据源和静态数据源页面筛选)
1676 |
1677 | 1678 | 1679 | 1680 | 1681 | 1682 | 1683 | 1684 |
1685 |
1686 | 1687 | 1688 | 1689 | 1690 | 1691 | 1694 | 1695 | 1696 | 1697 | 1698 | 1699 | 1700 | 1701 | 1702 | 1703 | 1704 | 1705 | 1706 | 1708 | 1709 | 1710 | 1711 | 1712 | 1713 | 1723 | 1724 |
1692 | 1693 | countindexidnameinfooperation
1707 | {datatableCount+(pageNo-1)*rowPerPage}{datatableIndex+(pageNo-1)*rowPerPage}No.{[0]}{[1]}{[2]} 1714 | 1715 | %{ 1716 | if([0]%2==0){ 1717 | DataTable.out('show  edit'); 1718 | }else{ 1719 | DataTable.out('show  edit  delete'); 1720 | } }% 1721 | 1722 |
1725 |
1726 |
1727 | 1728 |
1729 | ``` 1730 | 1731 | 1732 | ### 实例二: 数组对象数据集合(静态数据源) + All范围数据筛选 (2.X) 1733 | ```HTML 1734 | 1759 | 1760 |
1761 |
1762 | username( sql_i 模式): 1763 | userinfo( like_i 模式): 1764 |

1765 |
All当前页面数据范围静态筛选(仅支持静态数据源页面筛选)
1766 |
1767 | 1768 | 1769 | 1770 | 1771 | 1772 | 1773 | 1774 |
1775 |
1776 | 1777 | 1778 | 1779 | 1780 | 1782 | 1783 | 1784 | 1785 | 1786 | 1787 | 1788 | 1789 | 1790 | 1791 | 1792 | 1793 | 1795 | 1796 | 1797 | 1798 | 1799 | 1800 | 1810 | 1811 |
1781 | countindexidnameinfooperation
1794 | {datatableCount+(pageNo-1)*rowPerPage}{datatableIndex+(pageNo-1)*rowPerPage}No.{[0]}{[1]}{[2]} 1801 | 1802 | %{ 1803 | if([0]%2==0){ 1804 | DataTable.out('show  edit'); 1805 | }else{ 1806 | DataTable.out('show  edit  delete'); 1807 | } }% 1808 | 1809 |
1812 |
1813 |
1814 | 1815 |
1816 | ``` 1817 | 1818 | 1819 | ## 19、插件扩展:列宽拖动调整插件 1820 | 1821 | EasyDataTable支持使用[jquery-resizable-columns](https://github.com/dobtco/jquery-resizable-columns 'Viw on GitHub')插件实现数据表格的列宽拖动调整。 1822 | 1823 | 19.1、 为需要列拖动的数据表格的行首添加``标签 1824 | ```HTML 1825 | 1826 | 1827 | 1828 | 1829 | 1831 | 1832 | 1833 | 1834 | 1835 | 1836 | 1837 | 1838 | 1839 | 1840 | …… 1841 |
1830 | countindexidnameinfooperation
1842 | ``` 1843 | 19.2、使用 `$("#datatable12").resizableColumns();`初始化即可 1844 | ```HTML 1845 | 1846 | 1847 | 1848 | 1853 | ``` 1854 | 1855 | 1856 | 1857 | 1858 | 1859 | [在线Demo](http://www.easyproject.cn/easydatatable/zh-cn/index.jsp#demo '在线 Demo') 1860 | 1861 | 联系、反馈、定制Email: 1862 | 1863 | 1864 | 1865 | 1866 |

1867 | 支付宝钱包扫一扫捐助: 1868 |

1869 |

1870 | 1871 | 支付宝钱包扫一扫捐助 1872 | 1873 |




--------------------------------------------------------------------------------