mytable.js 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. (function($) {
  2. 'use strict';
  3. var con;
  4. var options;
  5. var curDatas;
  6. var element;
  7. var obj;
  8. /**
  9. * Datatable class
  10. *
  11. * @param object element DOM element or jquery element
  12. * @param object options Datatable options
  13. */
  14. var mytable = function(element, options, flag) {
  15. // default options
  16. var DEFAULTS = {
  17. isShoWPager:true,
  18. pager:{
  19. page_size:10
  20. }
  21. };
  22. this.options = $.extend({}, DEFAULTS, options);
  23. this.element = element;
  24. // this.options = options;
  25. this.pager = options.pager;
  26. this.con = $(element);
  27. this.obj = this;
  28. $(element).html('');
  29. if(flag) return;
  30. $(element).append('<div class="row"><div id="my_table" data-checkable="true" data-sortable="true"></div></div>'
  31. + '<div id="kkpager" class="row" style="text-align:center"></div>');
  32. this.getRemoteData(element,this.options,this);
  33. return this;
  34. };
  35. // Get options
  36. mytable.prototype = {
  37. getRemoteData:function(element,options,obj){
  38. if(!element) element = this.element;
  39. if(!options) options = this.options;
  40. var url = options.url;
  41. var p_cur = 1;
  42. var pager = options.pager;
  43. this.getServerData(p_cur, options, element, obj);
  44. },
  45. getRemoteData1:function(p_cur){
  46. this.getServerData(p_cur, this.options, this.element, this.obj);
  47. },
  48. getServerData:function(p_cur, options, element, obj){
  49. var url = options.url;
  50. var pager = options.pager;
  51. var page_size = pager.page_size;
  52. var param = options.param;
  53. // var obj = this.obj;
  54. post_common_service(url+"/"+p_cur+"/"+page_size, param, function(data) {
  55. // $(element).html("");
  56. element.tt_data=data.list;
  57. options.tableData=data.list;
  58. obj.setTable(data.list,element, options,p_cur);
  59. if(obj.options.pager){
  60. options.pager = {
  61. page_size:10,
  62. p_cur : data.pageNum, //页号
  63. p_pages:data.pages, //总页码
  64. p_totalRecords:data.total
  65. // 'cb':'getRemoteData
  66. }
  67. obj.setPager();
  68. }
  69. }, function(error) {
  70. alert(error);
  71. });
  72. },
  73. setTable:function(datas, element, options,p_cur) {
  74. var cols = options.cols;
  75. var tableData = datas;
  76. // var pager = options.pager;
  77. clearTable(cols);
  78. var rowData = formatTableData(tableData, cols, p_cur);
  79. // 使用data参数更新数据:
  80. $('#my_table').datatable('load',{
  81. cols: cols,
  82. rows:rowData
  83. }
  84. );
  85. function formatTableData(data,cols,p_cur){
  86. var rows = [];
  87. for(var i=0;i<data.length;i++){
  88. data[i].num=(p_cur-1)*10+i+1;
  89. rows.push(genRow(data[i],cols));
  90. }
  91. return rows;
  92. }
  93. function genRow(obj,cols){
  94. var row = {checked: false, data:null};
  95. var dArr=[];
  96. for(var i=0;i<cols.length;i++){
  97. if(cols[i].oper!=null) {
  98. var oper = cols[i].oper;
  99. var operStr="";
  100. for(var j=0;j<oper.length;j++){
  101. operStr+='<a href="#" onclick="'+oper[j].func+'('+obj[cols[i].field]+')"><i class="icon icon-edit"></i>'+oper[j].text+'</a> ';
  102. }
  103. dArr.push(operStr);
  104. }else{
  105. if(obj[cols[i].field])
  106. dArr.push(obj[cols[i].field]);
  107. else
  108. dArr.push('');
  109. }
  110. }
  111. row.data=dArr;
  112. return row;
  113. }
  114. function clearTable(cols){
  115. $('#my_table').datatable( {
  116. checkable:false,
  117. sortable:false,
  118. data: {
  119. cols: cols,
  120. rows:[]
  121. }
  122. });
  123. }
  124. },
  125. setPager:function(data) {
  126. var pager = this.options.pager;
  127. var p_cur = pager.p_cur;
  128. var p_pages = pager.p_pages;
  129. var p_totalRecords = pager.p_totalRecords;
  130. var obj=this;
  131. kkpager.generPageHtml({
  132. pno : p_cur,
  133. total : p_pages,
  134. totalRecords : p_totalRecords,
  135. mode : 'click',
  136. click : function(n){
  137. obj.options.pager.p_cur = n;
  138. this.selectPage(n);
  139. obj.getRemoteData1(n);//调用获取数据方法
  140. return false;
  141. }
  142. },true);
  143. }
  144. };
  145. $.fn.mytable = function(options) {
  146. if (typeof options == 'string') {
  147. switch (options) {
  148. case 'getTableData':
  149. return this[0].tt_data;
  150. case 'empty':
  151. return new mytable(this,options,true);
  152. }
  153. } else{
  154. return this.each(function() {
  155. // var $this = $(this);
  156. new mytable(this,options);
  157. // $(this).attr('tableData',mytable.tableData);
  158. });
  159. }
  160. };
  161. $.fn.mytable.Constructor = mytable;
  162. }(jQuery));