Table.js 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. Namespace.register("U.MD.UI.table");
  2. /*
  3. 表格控件的基础函数
  4. param1 datasource 数据源是一个object类型数组。
  5. param2 titles 标题是一个json类型数据
  6. param3 css 样式是一个json类型数据
  7. param4 parent 父元素
  8. */
  9. U.MD.UI.table = function (datasource, titles, css, parent) {
  10. U.MD.UI.table.thead(datasource, titles, css, parent);
  11. //创建表格
  12. }
  13. /*
  14. 表格控件的头部函数
  15. param1 {json} datasource 数据源是一个object类型数组。
  16. param2 {json} titles 标题是一个json类型数据
  17. param3 {json} css 宽度是一个json类型数据
  18. param4 {element} parent 父元素
  19. param5 {number} index 默认页面
  20. param6 {number} prows 页面
  21. */
  22. U.MD.UI.table.thead = function (datasource, titles, css, parent, index, prows) {
  23. if (!index) {
  24. //index默认为一
  25. index = 1;
  26. //prwos默认为数据源的长度
  27. prows = datasource.length;
  28. }
  29. var _table, _thead, _tr, _tbody;
  30. //申明变量
  31. _table = $$("table", { style: {
  32. "text-align":"center",
  33. "position": "relative",
  34. "width": " 100%",
  35. "border-collapse": " collapse",
  36. "border-width": " 1px",
  37. "border-style": " solid",
  38. "border-color": " rgb(213, 213, 213)",
  39. "border-image": " initial",
  40. "display": "table"} }, parent);
  41. //创建table标签
  42. _thead = $$("thead", {}, _table);
  43. //创建thead标签
  44. _tr = $$("tr", {}, _thead);
  45. //创建tr标签
  46. for (var num in titles) {
  47. //遍历titles
  48. if (typeof titles[num] === "object") {
  49. //判断是否有绑定事件
  50. $$("th", { innerHTML: titles[num].name, style: {
  51. "cssText": css[num],
  52. "padding": "10px 0",
  53. "font-weight": "normal",
  54. "border": "1px solid #d5d5d5"
  55. }, id: "th" }, _tr);
  56. //生成th
  57. } else {
  58. $$("th", { innerHTML: titles[num], style: {
  59. "cssText": css[num],
  60. "padding": "10px 0",
  61. "font-weight": "normal",
  62. "border": "1px solid #d5d5d5"
  63. }, id: "th" }, _tr);
  64. //生成th
  65. }
  66. }
  67. _tbody = $$("tbody", { style: { cssText: "width:100%;" }, id: "tbody" }, _table);
  68. //生成tbody
  69. U.MD.UI.table.tbody(_tbody, datasource, titles, css, index, prows);
  70. //运行tbody函数
  71. return _tbody;
  72. //返回tbody
  73. }
  74. /*
  75. 表格控件的身体函数
  76. param1 {element} parent 父元素,表格生成的地方
  77. param2 {json} datasource 数据源是一个object类型数组。
  78. param3 {json} titles 标题是一个json类型数据
  79. param4 {json} css 宽度是一个json类型数据
  80. param5 {number} index 默认页面
  81. param6 {number} prows 页面行数
  82. */
  83. U.MD.UI.table.tbody = function (parent, datasource, titles, css, index, prows) {
  84. var _tr, _td, _div, _neirong;
  85. //申明变量
  86. for (var num = (index - 1) * prows; num < index * prows && num < datasource.length; num++) {
  87. //建立一个循环,以(index - 1) * prows为初始值,index * prows为终点进行循环
  88. if (num % 2 != 0) {
  89. //判断table列表的行数是否是单数
  90. _tr = $$("tr", { style: { cssText: "background-color: #FFF;" }, id: "tr" }, parent);
  91. //行数是单的背景颜色是白色
  92. } else {
  93. _tr = $$("tr", { style: { cssText: "background-color: #dde4ee;" }, id: "tr" }, parent);
  94. //行数是双的背景颜色是#dde4ee
  95. }
  96. for (var name in titles) {
  97. //遍历titles
  98. _td = $$("td", { id: "td" }, _tr);
  99. //生成td
  100. if (titles[name].content) {
  101. for (var k = 0; k < titles[name].content.length; k++) {
  102. //遍历添加的元素
  103. _div = U.MD.UI.table.printDiv(_td, titles[name].content[k]);
  104. //生成div
  105. if (titles[name].content[k].onclick) {
  106. U.MD.UI.table.onclick(_div, datasource[num], titles[name].content[k].onclick);
  107. }
  108. //添加点击事件
  109. }
  110. } else {
  111. _div = $$("div", { innerHTML: datasource[num][name], style: { "overflow": "hidden", "cssText": css[name]} }, _td);
  112. if (titles[name].id) {//判断是否需要给td添加id
  113. _div.id = datasource[num][titles[name].id];
  114. }
  115. }
  116. }
  117. }
  118. }
  119. /*
  120. 表格控件的分页表格函数
  121. param1 {json} datasource 数据源 json
  122. param2 {json} titles 标题是一个json类型数据
  123. param3 {json} css 宽度是一个json类型数据
  124. param4 {number} prows 页面行数 int
  125. param5 {number} index 默认页面 int
  126. param6 {element} parent 父元素
  127. */
  128. U.MD.UI.table.pageTable = function (datasource, titles, css, prows, index, parent) {
  129. var _div = $$("div", { "style": {
  130. "left": "0px",
  131. "right": "0px",
  132. "width": "100%",
  133. "margin": "0 auto",
  134. "top": "200px" }
  135. }, parent);
  136. //生成一个大div放表格和分页
  137. var _tdiv = $$("div", {}, _div);
  138. //生成一个div 放表格
  139. var _tbody = U.MD.UI.table.thead(datasource, titles, css, _tdiv, index, prows);
  140. //生成表格,放_tdiv里
  141. var _pdiv = $$("div", { "style": {"width": "650px", "margin": "20px auto 0 auto"}}, _div); //生成一个div 放分页按钮
  142. new U.UF.P.page(_pdiv, datasource.length, prows, index, function (page) {
  143. //生成分页控件,当点击其他页面是触发匿名波函数
  144. U.MD.UI.table.delChild(_tbody);
  145. //当点击下一页时,首先删除tbody 下全部子元
  146. U.MD.UI.table.tbody(_tbody, datasource, titles, css, page, prows);
  147. //生成tbody
  148. });
  149. }
  150. /*
  151. 删除子元素函数
  152. param {element}obj 删除子元素的函数
  153. */
  154. U.MD.UI.table.delChild = function (obj) {
  155. for (var num = obj.children.length - 1; num >= 0; num--) {
  156. //得到元素底下的全部子元素
  157. obj.removeChild(obj.children[num])
  158. //删除子元素
  159. }
  160. }
  161. /*
  162. 点击事件函数
  163. param1 {element} obj 点击事件的触发对象
  164. param2 {json} datasource 展示的数据
  165. */
  166. U.MD.UI.table.onclick = function (obj, datasource, fun) {
  167. obj.onclick = function () {
  168. //绑定事件
  169. fun(datasource);
  170. }
  171. }
  172. /*
  173. 打印div
  174. param2 {sting || element} content 生成内容(字符串或者元素)
  175. param1 {element} parent 生成的父元素
  176. */
  177. U.MD.UI.table.printDiv = function (parent, content) {
  178. var _div;
  179. //判断content类型是否是字符串
  180. if (typeof content.name == "string") {
  181. //是字符串的生成div,打印内容
  182. _div = $$("div", { "innerHTML": content.name }, parent);
  183. }
  184. //如果content类型是object类型
  185. if (typeof content.name == "object") {
  186. //就克隆Contet
  187. var _dd = content.name.cloneNode(true);
  188. parent.appendChild(_dd);
  189. _div = _dd;
  190. }
  191. return _div;
  192. }