table.html 88 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>镜像站@table 数据表格文档 - Layui</title>
  6. <meta name="renderer" content="webkit">
  7. <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  8. <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
  9. <meta name="apple-mobile-web-app-status-bar-style" content="black">
  10. <meta name="apple-mobile-web-app-capable" content="yes">
  11. <meta name="format-detection" content="telephone=no">
  12. <script>
  13. ;!function(){self!==parent&&(location.href="http://www.baidu.com/")}();
  14. </script>
  15. <link rel="stylesheet" href="/public/layui/dist/css/layui.css" tppabs="http://res.layui.com/layui/dist/css/layui.css?t=1632428048260" media="all">
  16. <link rel="stylesheet" href="/public/static/css/global.css" tppabs="http://res.layui.com/static/css/global.css?t=1632428048260-19" media="all">
  17. </head>
  18. <body>
  19. <div class="layui-header header header-doc" autumn>
  20. <div class="layui-container">
  21. <a class="logo" href="../../index.html" tppabs="http://www.layui.com/">
  22. <img src="/public/static/images/layui/logo.png" tppabs="http://res.layui.com/static/images/layui/logo.png" alt="layui">
  23. </a>
  24. <div class="layui-form layui-hide-xs component" lay-filter="LAY-site-header-component"></div>
  25. <div class="layui-hide-xs site-notice"></div>
  26. <ul class="layui-nav" id="LAY_NAV_TOP">
  27. <li class="layui-nav-item layui-this">
  28. <a href="../index.html" tppabs="http://www.layui.com/doc/">文档</a>
  29. </li>
  30. <li class="layui-nav-item ">
  31. <a href="../../demo/index.html" tppabs="http://www.layui.com/demo/">示例</a>
  32. </li>
  33. <li class="layui-nav-item">
  34. <a href="javascript:;">
  35. <!--<span class="layui-badge-dot" style="left:0; right: auto; margin: -4px 0 0 5px;"></span>-->
  36. 周边
  37. </a>
  38. <dl class="layui-nav-child layui-nav-child-c">
  39. <dd class="layui-hide-sm layui-show-xs" lay-unselect>
  40. <a href="https://gitee.com/sentsin/layui/issues" target="_blank" rel="nofollow">问题反馈</a>
  41. <hr>
  42. </dd>
  43. <dd lay-unselect><a href="../../alone.html" tppabs="http://www.layui.com/alone.html" target="_blank" lay-unselect>独立组件</a></dd>
  44. <dd lay-unselect><a href="../../../fly.layui.com/extend/index.html" target="_blank">扩展组件</a></dd>
  45. </dl>
  46. </li>
  47. <li class="layui-nav-item layui-hide-xs">
  48. <a href="http://gitee.com/sentsin/layui/issues" target="_blank" rel="nofollow">反馈</a>
  49. </li>
  50. </ul>
  51. </div>
  52. </div>
  53. <!-- 让IE8/9支持媒体查询,从而兼容栅格 -->
  54. <!--[if lt IE 9]>
  55. <script src="../../../other/html5shiv/r29/html5.min.js" tppabs="https://cdn.staticfile.org/html5shiv/r29/html5.min.js"></script>
  56. <script src="../../../other/respond.js/1.4.2/respond.min.js" tppabs="https://cdn.staticfile.org/respond.js/1.4.2/respond.min.js"></script>
  57. <![endif]-->
  58. <ul class="site-dir">
  59. <li><a href="#use"><cite>快速使用</cite></a></li>
  60. <li><a href="#init"><cite>渲染方式</cite></a></li>
  61. <ul style="margin-left: 15px;">
  62. <li><a href="#methodRender">方法渲染</a></li>
  63. <li><a href="#autoRender">自动渲染</a></li>
  64. <li><a href="#parseTable">转换静态表格</a></li>
  65. </ul>
  66. <li><a href="#options"><cite>基础参数一览表</cite> <span class="layui-badge-dot"></span></a></li>
  67. <li><a href="#cols"><cite>表头参数一览表</cite> <span class="layui-badge-dot"></span></a></li>
  68. <li><a href="#async"><cite>异步数据参数</cite> <span class="layui-badge-dot"></span></a></li>
  69. <li><a href="#templet"><cite>自定义模板</cite> <span class="layui-badge-dot"></span></a></li>
  70. <li><a href="#toolbar"><cite>绑定列工具条</cite> </a></li>
  71. <li><a href="#method"><cite>基础方法</cite></a></li>
  72. <ul style="margin-left: 15px;">
  73. <li><a href="#checkStatus">获取选中行</a></li>
  74. <li><a href="#ontoolCallback"><cite>删除/修改行</cite></a></li>
  75. <li><a href="#reload"><cite>表格重载</cite> <span class="layui-badge-dot"></span></a></li>
  76. <li><a href="#method-resize"><cite>重置表格尺寸结构</cite></a></li>
  77. <li><a href="#export"><cite>导出任意数据</cite></a></li>
  78. <li><a href="#method">其它方法</a></li>
  79. </ul>
  80. <li><a href="#on"><cite>事件</cite></a></li>
  81. <ul style="margin-left: 15px;">
  82. <li><a href="#ontoolbar">头工具栏事件 <span class="layui-badge-dot"></span></a></li>
  83. <li><a href="#oncheckbox">复选框</a></li>
  84. <li><a href="#onradio">单选框</a></li>
  85. <li><a href="#onedit">单元格编辑</a></li>
  86. <li><a href="#onrow">行单双击事件 <span class="layui-badge-dot"></span></a></li>
  87. <li><a href="#ontool">行工具事件</a></li>
  88. <li><a href="#onsort">排序切换</a></li>
  89. </ul>
  90. </ul>
  91. <div class="layui-container layui-row">
  92. <div class="layui-col-md3">
  93. <div class="layui-panel site-menu">
  94. <ul class="layui-menu layui-menu-lg">
  95. <li class="layui-menu-item-group" lay-options="{type: 'group', isAllowSpread: true}">
  96. <div class="layui-menu-body-title">
  97. 基础说明
  98. </div>
  99. <hr>
  100. <ul>
  101. <li class="">
  102. <div class="layui-menu-body-title">
  103. <a href="../index.html" tppabs="http://www.layui.com/doc/">
  104. <span>开始使用 </span>
  105. <span class="layui-font-12 layui-font-gray">Getting Started</span>
  106. </a>
  107. </div>
  108. </li>
  109. <li class="">
  110. <div class="layui-menu-body-title">
  111. <a href="../base/infrastructure.html" tppabs="http://www.layui.com/doc/base/infrastructure.html">
  112. <span>底层方法 </span>
  113. <span class="layui-font-12 layui-font-gray">基础支撑</span>
  114. </a>
  115. </div>
  116. </li>
  117. <li class="">
  118. <div class="layui-menu-body-title">
  119. <a href="../base/element.html" tppabs="http://www.layui.com/doc/base/element.html">
  120. <span>页面元素 </span>
  121. <span class="layui-font-12 layui-font-gray">规范 公共类 属性</span>
  122. </a>
  123. </div>
  124. </li>
  125. <li class="">
  126. <div class="layui-menu-body-title">
  127. <a href="../base/modules.html" tppabs="http://www.layui.com/doc/base/modules.html">
  128. <span>模块规范 </span>
  129. <span class="layui-font-12 layui-font-gray">使用 扩展</span>
  130. </a>
  131. </div>
  132. </li>
  133. <li class="">
  134. <div class="layui-menu-body-title">
  135. <a href="../base/faq.html" tppabs="http://www.layui.com/doc/base/faq.html">
  136. <span>常见问题 </span>
  137. <span class="layui-font-12 layui-font-gray">FAQ</span>
  138. </a>
  139. </div>
  140. </li>
  141. <li class="">
  142. <div class="layui-menu-body-title">
  143. <a href="../base/changelog.html" tppabs="http://www.layui.com/doc/base/changelog.html">
  144. <span>更新日志 </span>
  145. <span class="layui-font-12 layui-font-gray">changelog</span>
  146. <span class="layui-badge-dot"></span>
  147. </a>
  148. </div>
  149. </li>
  150. </ul>
  151. </li>
  152. <li class="layui-menu-item-group" lay-options="{type: 'group', isAllowSpread: true}">
  153. <div class="layui-menu-body-title">
  154. 页面元素
  155. </div>
  156. <hr>
  157. <ul>
  158. <li class="">
  159. <div class="layui-menu-body-title">
  160. <a href="../element/layout.html" tppabs="http://www.layui.com/doc/element/layout.html">
  161. <span>布局 </span>
  162. <span class="layui-font-12 layui-font-gray">栅格 后台管理布局</span>
  163. </a>
  164. </div>
  165. </li>
  166. <li class="">
  167. <div class="layui-menu-body-title">
  168. <a href="../element/color.html" tppabs="http://www.layui.com/doc/element/color.html">
  169. <span>颜色 </span>
  170. <span class="layui-font-12 layui-font-gray">主色调 颜色搭配</span>
  171. </a>
  172. </div>
  173. </li>
  174. <li class="">
  175. <div class="layui-menu-body-title">
  176. <a href="../element/icon.html" tppabs="http://www.layui.com/doc/element/icon.html">
  177. <span>图标 </span>
  178. <span class="layui-font-12 layui-font-gray">iconfont 字体图标</span>
  179. </a>
  180. </div>
  181. </li>
  182. <li class="">
  183. <div class="layui-menu-body-title">
  184. <a href="../element/anim.html" tppabs="http://www.layui.com/doc/element/anim.html">
  185. <span>动画 </span>
  186. <span class="layui-font-12 layui-font-gray">内置 CSS3 动画</span>
  187. </a>
  188. </div>
  189. </li>
  190. <li class="">
  191. <div class="layui-menu-body-title">
  192. <a href="../element/button.html" tppabs="http://www.layui.com/doc/element/button.html">
  193. <span>按钮 </span>
  194. <span class="layui-font-12 layui-font-gray">button</span>
  195. </a>
  196. </div>
  197. </li>
  198. <li class="">
  199. <div class="layui-menu-body-title">
  200. <a href="../element/form.html" tppabs="http://www.layui.com/doc/element/form.html">
  201. <span>表单 </span>
  202. <span class="layui-font-12 layui-font-gray">form 元素集合</span>
  203. </a>
  204. </div>
  205. </li>
  206. <li class="">
  207. <div class="layui-menu-body-title">
  208. <a href="../element/nav.html" tppabs="http://www.layui.com/doc/element/nav.html">
  209. <span>导航 </span>
  210. <span class="layui-font-12 layui-font-gray">nav 面包屑</span>
  211. </a>
  212. </div>
  213. </li>
  214. <li class="">
  215. <div class="layui-menu-body-title">
  216. <a href="../element/menu.html" tppabs="http://www.layui.com/doc/element/menu.html">
  217. <span>菜单 </span>
  218. <span class="layui-font-12 layui-font-gray">menu 基础菜单</span>
  219. <span class="layui-badge-dot"></span>
  220. </a>
  221. </div>
  222. </li>
  223. <li class="">
  224. <div class="layui-menu-body-title">
  225. <a href="../element/tab.html" tppabs="http://www.layui.com/doc/element/tab.html">
  226. <span>选项卡 </span>
  227. <span class="layui-font-12 layui-font-gray">Tabs 切换</span>
  228. </a>
  229. </div>
  230. </li>
  231. <li class="">
  232. <div class="layui-menu-body-title">
  233. <a href="../element/progress.html" tppabs="http://www.layui.com/doc/element/progress.html">
  234. <span>进度条 </span>
  235. <span class="layui-font-12 layui-font-gray">progress</span>
  236. </a>
  237. </div>
  238. </li>
  239. <li class="">
  240. <div class="layui-menu-body-title">
  241. <a href="../element/panel.html" tppabs="http://www.layui.com/doc/element/panel.html">
  242. <span>面板 </span>
  243. <span class="layui-font-12 layui-font-gray">panel 卡片 折叠</span>
  244. </a>
  245. </div>
  246. </li>
  247. <li class="">
  248. <div class="layui-menu-body-title">
  249. <a href="../element/table.html" tppabs="http://www.layui.com/doc/element/table.html">
  250. <span>表格 </span>
  251. <span class="layui-font-12 layui-font-gray">静态 table</span>
  252. </a>
  253. </div>
  254. </li>
  255. <li class="">
  256. <div class="layui-menu-body-title">
  257. <a href="../element/badge.html" tppabs="http://www.layui.com/doc/element/badge.html">
  258. <span>徽章 </span>
  259. <span class="layui-font-12 layui-font-gray">小圆点 小边框</span>
  260. </a>
  261. </div>
  262. </li>
  263. <li class="">
  264. <div class="layui-menu-body-title">
  265. <a href="../element/timeline.html" tppabs="http://www.layui.com/doc/element/timeline.html">
  266. <span>时间线 </span>
  267. <span class="layui-font-12 layui-font-gray">timeline</span>
  268. </a>
  269. </div>
  270. </li>
  271. <li class="">
  272. <div class="layui-menu-body-title">
  273. <a href="../element/auxiliar.html" tppabs="http://www.layui.com/doc/element/auxiliar.html">
  274. <span>辅助 </span>
  275. <span class="layui-font-12 layui-font-gray">引用 字段集 横线等</span>
  276. </a>
  277. </div>
  278. </li>
  279. </ul>
  280. </li>
  281. <li class="layui-menu-item-group" lay-options="{type: 'group', isAllowSpread: true}">
  282. <div class="layui-menu-body-title">
  283. 内置模块
  284. </div>
  285. <hr>
  286. <ul>
  287. <li class="">
  288. <div class="layui-menu-body-title">
  289. <a href="layer.html" tppabs="http://www.layui.com/doc/modules/layer.html">
  290. <span>弹出层 </span>
  291. <span class="layui-font-12 layui-font-gray">layer</span>
  292. </a>
  293. </div>
  294. </li>
  295. <li class="">
  296. <div class="layui-menu-body-title">
  297. <a href="laydate.html" tppabs="http://www.layui.com/doc/modules/laydate.html">
  298. <span>日期与时间选择 </span>
  299. <span class="layui-font-12 layui-font-gray">laydate</span>
  300. </a>
  301. </div>
  302. </li>
  303. <li class="">
  304. <div class="layui-menu-body-title">
  305. <a href="laypage.html" tppabs="http://www.layui.com/doc/modules/laypage.html">
  306. <span>分页 </span>
  307. <span class="layui-font-12 layui-font-gray">laypage</span>
  308. </a>
  309. </div>
  310. </li>
  311. <li class="">
  312. <div class="layui-menu-body-title">
  313. <a href="laytpl.html" tppabs="http://www.layui.com/doc/modules/laytpl.html">
  314. <span>模板引擎 </span>
  315. <span class="layui-font-12 layui-font-gray">laytpl</span>
  316. </a>
  317. </div>
  318. </li>
  319. <li class="layui-menu-item-checked2">
  320. <div class="layui-menu-body-title">
  321. <a href="table.html" tppabs="http://www.layui.com/doc/modules/table.html">
  322. <span>数据表格 </span>
  323. <span class="layui-font-12 layui-font-gray">table</span>
  324. </a>
  325. </div>
  326. </li>
  327. <li class="">
  328. <div class="layui-menu-body-title">
  329. <a href="form.html" tppabs="http://www.layui.com/doc/modules/form.html">
  330. <span>表单 </span>
  331. <span class="layui-font-12 layui-font-gray">form</span>
  332. </a>
  333. </div>
  334. </li>
  335. <li class="">
  336. <div class="layui-menu-body-title">
  337. <a href="upload.html" tppabs="http://www.layui.com/doc/modules/upload.html">
  338. <span>文件上传 </span>
  339. <span class="layui-font-12 layui-font-gray">upload</span>
  340. </a>
  341. </div>
  342. </li>
  343. <li class="">
  344. <div class="layui-menu-body-title">
  345. <a href="dropdown.html" tppabs="http://www.layui.com/doc/modules/dropdown.html">
  346. <span>下拉菜单 </span>
  347. <span class="layui-font-12 layui-font-gray">dropdown</span>
  348. <span class="layui-badge-dot"></span>
  349. </a>
  350. </div>
  351. </li>
  352. <li class="">
  353. <div class="layui-menu-body-title">
  354. <a href="transfer.html" tppabs="http://www.layui.com/doc/modules/transfer.html">
  355. <span>穿梭框 </span>
  356. <span class="layui-font-12 layui-font-gray">transfer</span>
  357. </a>
  358. </div>
  359. </li>
  360. <li class="">
  361. <div class="layui-menu-body-title">
  362. <a href="tree.html" tppabs="http://www.layui.com/doc/modules/tree.html">
  363. <span>树形组件 </span>
  364. <span class="layui-font-12 layui-font-gray">tree</span>
  365. </a>
  366. </div>
  367. </li>
  368. <li class="">
  369. <div class="layui-menu-body-title">
  370. <a href="colorpicker.html" tppabs="http://www.layui.com/doc/modules/colorpicker.html">
  371. <span>颜色选择器 </span>
  372. <span class="layui-font-12 layui-font-gray">colorpicker</span>
  373. </a>
  374. </div>
  375. </li>
  376. <li class="">
  377. <div class="layui-menu-body-title">
  378. <a href="element.html" tppabs="http://www.layui.com/doc/modules/element.html">
  379. <span>常用元素操作 </span>
  380. <span class="layui-font-12 layui-font-gray">element</span>
  381. </a>
  382. </div>
  383. </li>
  384. <li class="">
  385. <div class="layui-menu-body-title">
  386. <a href="slider.html" tppabs="http://www.layui.com/doc/modules/slider.html">
  387. <span>滑块 </span>
  388. <span class="layui-font-12 layui-font-gray">slider</span>
  389. </a>
  390. </div>
  391. </li>
  392. <li class="">
  393. <div class="layui-menu-body-title">
  394. <a href="rate.html" tppabs="http://www.layui.com/doc/modules/rate.html">
  395. <span>评分 </span>
  396. <span class="layui-font-12 layui-font-gray">rate</span>
  397. </a>
  398. </div>
  399. </li>
  400. <li class="">
  401. <div class="layui-menu-body-title">
  402. <a href="carousel.html" tppabs="http://www.layui.com/doc/modules/carousel.html">
  403. <span>轮播 </span>
  404. <span class="layui-font-12 layui-font-gray">carousel</span>
  405. </a>
  406. </div>
  407. </li>
  408. <li class="">
  409. <div class="layui-menu-body-title">
  410. <a href="layedit.html" tppabs="http://www.layui.com/doc/modules/layedit.html">
  411. <span>富文本编辑器 </span>
  412. <span class="layui-font-12 layui-font-gray">layedit</span>
  413. </a>
  414. </div>
  415. </li>
  416. <li class="">
  417. <div class="layui-menu-body-title">
  418. <a href="flow.html" tppabs="http://www.layui.com/doc/modules/flow.html">
  419. <span>流加载 </span>
  420. <span class="layui-font-12 layui-font-gray">flow</span>
  421. </a>
  422. </div>
  423. </li>
  424. <li class="">
  425. <div class="layui-menu-body-title">
  426. <a href="util.html" tppabs="http://www.layui.com/doc/modules/util.html">
  427. <span>工具组件 </span>
  428. <span class="layui-font-12 layui-font-gray">util</span>
  429. </a>
  430. </div>
  431. </li>
  432. <li class="">
  433. <div class="layui-menu-body-title">
  434. <a href="code.html" tppabs="http://www.layui.com/doc/modules/code.html">
  435. <span>代码高亮显示 </span>
  436. <span class="layui-font-12 layui-font-gray">code</span>
  437. </a>
  438. </div>
  439. </li>
  440. </ul>
  441. </li>
  442. </ul>
  443. </div>
  444. <div class="layui-hide-v"> - </div>
  445. </div>
  446. <div class="layui-col-md9 site-content">
  447. <h1 class="site-h1"><i class="layui-icon">&#xe62d;</i> table 数据表格文档 - layui.table</h1>
  448. <blockquote class="layui-elem-quote">
  449. table 模块是我们的又一走心之作,在 layui 2.0 的版本中全新推出,是 layui 最核心的组成之一。它用于对表格进行一些列功能和动态化数据操作,涵盖了日常业务所涉及的几乎全部需求。支持固定表头、固定行、固定列左/列右,支持拖拽改变列宽度,支持排序,支持多级表头,支持单元格的自定义模板,支持对表格重载(比如搜索、条件筛选等),支持复选框,支持分页,支持单元格编辑等等一些列功能。尽管如此,我们仍将对其进行完善,在控制代码量和性能的前提下,不定期增加更多人性化功能。table 模块也将是 layui 重点维护的项目之一。
  450. </blockquote>
  451. <blockquote class="layui-elem-quote">
  452. <p>模块加载名称:<em>table</em></p>
  453. </blockquote>
  454. <fieldset class="layui-elem-field layui-field-title site-title">
  455. <legend><a name="use">快速使用</a></legend>
  456. </fieldset>
  457. <div class="site-text">
  458. <p>创建一个table实例最简单的方式是,在页面放置一个元素 <em>&lt;table id="demo">&lt;/table></em>,然后通过 <em>table.render()</em> 方法指定该容器,如下所示:</p>
  459. </div>
  460. <table id="demo" lay-filter="test"></table>
  461. <div class="site-text">
  462. <p>上面你已经看到了一个简单数据表格的基本样子,你一定迫不及待地想知道它的使用方式。下面就是它对应的代码:</p>
  463. <pre class="layui-code" lay-title="对应的代码">
  464. &lt;!DOCTYPE html&gt;
  465. &lt;html&gt;
  466. &lt;head&gt;
  467. &lt;meta charset=&quot;utf-8&quot;&gt;
  468. &lt;title&gt;table模块快速使用&lt;/title&gt;
  469. &lt;link rel=&quot;stylesheet&quot; href=&quot;/layui/css/layui.css&quot; media=&quot;all&quot;&gt;
  470. &lt;/head&gt;
  471. &lt;body&gt;
  472. &lt;table id="demo" lay-filter="test"&gt;&lt;/table&gt;
  473. &lt;script src=&quot;/layui/layui.js&quot;&gt;&lt;/script&gt;
  474. &lt;script&gt;
  475. layui.use(&#x27;table&#x27;, function(){
  476. var table = layui.table;
  477. //第一个实例
  478. table.render({
  479. elem: '#demo'
  480. ,height: 312
  481. ,url: '../../demo/table/user/-page=1&limit=30.js' //数据接口
  482. ,page: true //开启分页
  483. ,cols: [[ //表头
  484. {field: 'id', title: 'ID', width:80, sort: true, fixed: 'left'}
  485. ,{field: 'username', title: '用户名', width:80}
  486. ,{field: 'sex', title: '性别', width:80, sort: true}
  487. ,{field: 'city', title: '城市', width:80}
  488. ,{field: 'sign', title: '签名', width: 177}
  489. ,{field: 'experience', title: '积分', width: 80, sort: true}
  490. ,{field: 'score', title: '评分', width: 80, sort: true}
  491. ,{field: 'classify', title: '职业', width: 80}
  492. ,{field: 'wealth', title: '财富', width: 135, sort: true}
  493. ]]
  494. });
  495. });
  496. &lt;/script&gt;
  497. &lt;/body&gt;
  498. &lt;/html&gt;</pre>
  499. <p>一切都并不会陌生:绑定容器、设置数据接口、在表头设定对应的字段,剩下的…就交给 layui 吧。你的牛刀是否早已饥渴难耐?那么不妨现在就去小试一波吧。数据接口可参考:<a href="../../demo/table/user/-page=1&limit=30.js" tppabs="http://www.layui.com/demo/table/user/?page=1&limit=30" target="_blank">返回的数据</a>,规则在下文也有讲解。</p>
  500. </div>
  501. <fieldset class="layui-elem-field layui-field-title site-title">
  502. <legend><a name="init">三种初始化渲染方式</a></legend>
  503. </fieldset>
  504. <div class="site-text">
  505. <p>在上述“快速使用”的介绍中,你已经初步见证了 table 模块的信手拈来,但其使用方式并不止那一种。我们为了满足各种情况下的需求,对 table 模块做了三种初始化的支持,你可按照个人喜好和实际情况灵活使用。</p>
  506. </div>
  507. <table class="layui-table">
  508. <colgroup>
  509. <col width="50">
  510. <col width="120">
  511. <col width="200">
  512. <col>
  513. </colgroup>
  514. <thead>
  515. <tr>
  516. <th></th>
  517. <th>方式</th>
  518. <th>机制</th>
  519. <th>适用场景</th>
  520. </tr>
  521. </thead>
  522. <tbody class="layui-text">
  523. <tr>
  524. <td>01.</td>
  525. <td><a href="#methodRender">方法渲染</a></td>
  526. <td>用JS方法的配置完成渲染</td>
  527. <td>(推荐)无需写过多的 HTML,在 JS 中指定原始元素,再设定各项参数即可。</td>
  528. </tr>
  529. <tr>
  530. <td>02.</td>
  531. <td><a href="#autoRender">自动渲染</a></td>
  532. <td>HTML配置,自动渲染</td>
  533. <td>无需写过多 JS,可专注于 HTML 表头部分</td>
  534. </tr>
  535. <tr>
  536. <td>03.</td>
  537. <td><a href="#parseTable">转换静态表格</a></td>
  538. <td>转化一段已有的表格元素</td>
  539. <td>无需配置数据接口,在JS中指定表格元素,并简单地给表头加上自定义属性即可</td>
  540. </tr>
  541. </tbody>
  542. </table>
  543. <fieldset class="layui-elem-field layui-field-title site-title">
  544. <legend><a name="methodRender">方法渲染</a></legend>
  545. </fieldset>
  546. <div class="site-text">
  547. <p>其实这是“自动化渲染”的手动模式,本质类似,只是“方法级渲染”将基础参数的设定放在了JS代码中,且原始的 table 标签只需要一个 <em>选择器</em>:</p>
  548. </div>
  549. <pre class="layui-code" lay-title="HTML">
  550. &lt;table id="demo" lay-filter="test"&gt;&lt;/table&gt;
  551. </pre>
  552. <pre class="layui-code" lay-title="JavaScript">
  553. var table = layui.table;
  554. //执行渲染
  555. table.render({
  556. elem: '#demo' //指定原始表格元素选择器(推荐id选择器)
  557. ,height: 315 //容器高度
  558. ,cols: [{}] //设置表头
  559. //,…… //更多参数参考右侧目录:基本参数选项
  560. });
  561. </pre>
  562. <div class="site-text">
  563. <p>事实上我们更推荐采用“方法级渲染”的做法,其最大的优势在于你可以脱离HTML文件,而专注于JS本身。尤其对于项目的频繁改动及发布,其便捷性会体现得更为明显。而究竟它与“自动化渲染”的方式谁更简单,也只能由各位猿猿们自行体味了。</p>
  564. <p>备注:<em>table.render()</em>方法返回一个对象:var tableIns = table.render(options),可用于对当前表格进行“重载”等操作,详见目录:<a href="#reload">表格重载</a></p>
  565. </div>
  566. <fieldset class="layui-elem-field layui-field-title site-title">
  567. <legend><a name="autoRender">自动渲染</a></legend>
  568. </fieldset>
  569. <div class="site-text">
  570. <p>
  571. 所谓的自动渲染,即:在一段 table 容器中配置好相应的参数,由 table 模块内部自动对其完成渲染,而无需你写初始的渲染方法。其特点在上文也有阐述。你需要关注的是以下三点:
  572. <br><br>1) 带有 <em>class="layui-table"</em> 的 <em>&lt;table></em> 标签。
  573. <br>2) 对标签设置属性 <em>lay-data=""</em> 用于配置一些基础参数
  574. <br>3) 在 <em>&lt;th></em> 标签中设置属性<em>lay-data=""</em>用于配置表头信息
  575. </p>
  576. </div>
  577. <div class="site-text">
  578. <p>按照上述的规范写好table原始容器后,只要你加载了layui 的 table 模块,就会自动对其建立动态的数据表格。下面是一个示例:</p>
  579. </div>
  580. <pre class="layui-code">
  581. &lt;table class=&quot;layui-table&quot; lay-data=&quot;{height:315, url:&#x27;/demo/table/user/&#x27;, page:true, id:&#x27;test&#x27;}&quot; lay-filter=&quot;test&quot;&gt;
  582. &lt;thead&gt;
  583. &lt;tr&gt;
  584. &lt;th lay-data=&quot;{field:&#x27;id&#x27;, width:80, sort: true}&quot;&gt;ID&lt;/th&gt;
  585. &lt;th lay-data=&quot;{field:&#x27;username&#x27;, width:80}&quot;&gt;用户名&lt;/th&gt;
  586. &lt;th lay-data=&quot;{field:&#x27;sex&#x27;, width:80, sort: true}&quot;&gt;性别&lt;/th&gt;
  587. &lt;th lay-data=&quot;{field:&#x27;city&#x27;}&quot;&gt;城市&lt;/th&gt;
  588. &lt;th lay-data=&quot;{field:&#x27;sign&#x27;}&quot;&gt;签名&lt;/th&gt;
  589. &lt;th lay-data=&quot;{field:&#x27;experience&#x27;, sort: true}&quot;&gt;积分&lt;/th&gt;
  590. &lt;th lay-data=&quot;{field:&#x27;score&#x27;, sort: true}&quot;&gt;评分&lt;/th&gt;
  591. &lt;th lay-data=&quot;{field:&#x27;classify&#x27;}&quot;&gt;职业&lt;/th&gt;
  592. &lt;th lay-data=&quot;{field:&#x27;wealth&#x27;, sort: true}&quot;&gt;财富&lt;/th&gt;
  593. &lt;/tr&gt;
  594. &lt;/thead&gt;
  595. &lt;/table&gt;
  596. </pre>
  597. <fieldset class="layui-elem-field layui-field-title site-title">
  598. <legend><a name="parseTable">转换静态表格</a></legend>
  599. </fieldset>
  600. <div class="site-text">
  601. <p>假设你的页面已经存在了一段有内容的表格,它由原始的table标签组成,这时你需要赋予它一些动态元素,比如拖拽调整列宽?比如排序等等?那么你同样可以很轻松地去实现。如下所示:</p>
  602. </div>
  603. <table lay-filter="parse-table-demo" style="border: 1px solid #e2e2e2;">
  604. <thead>
  605. <tr>
  606. <th lay-data="{field:'username', width:100}">昵称</th>
  607. <th lay-data="{field:'experience', width:80, sort:true}">积分</th>
  608. <th lay-data="{field:'sign'}">签名</th>
  609. </tr>
  610. </thead>
  611. <tbody>
  612. <tr>
  613. <td>贤心1</td>
  614. <td>66</td>
  615. <td>人生就像是一场修行a</td>
  616. </tr>
  617. <tr>
  618. <td>贤心2</td>
  619. <td>88</td>
  620. <td>人生就像是一场修行b</td>
  621. </tr>
  622. <tr>
  623. <td>贤心3</td>
  624. <td>33</td>
  625. <td>人生就像是一场修行c</td>
  626. </tr>
  627. </tbody>
  628. </table>
  629. <button class="layui-btn" onclick="layui.table.init('parse-table-demo');layui.jquery(this).addClass('layui-btn-disabled')" style="margin: 10px 0;">转换上述表格</button>
  630. <div class="site-text">
  631. <p>通过上面的小例子,你已经初步见识了这一功能的实际意义。尝试在你的静态表格的 <em>th</em> 标签中加上 <em>lay-data=""</em> 属性,代码如下:</p>
  632. </div>
  633. <pre class="layui-code" lay-title="HTML" lay-height="200px">
  634. &lt;table lay-filter=&quot;demo&quot;&gt;
  635. &lt;thead&gt;
  636. &lt;tr&gt;
  637. &lt;th lay-data=&quot;{field:&#x27;username&#x27;, width:100}&quot;&gt;昵称&lt;/th&gt;
  638. &lt;th lay-data=&quot;{field:&#x27;experience&#x27;, width:80, sort:true}&quot;&gt;积分&lt;/th&gt;
  639. &lt;th lay-data=&quot;{field:&#x27;sign&#x27;}&quot;&gt;签名&lt;/th&gt;
  640. &lt;/tr&gt;
  641. &lt;/thead&gt;
  642. &lt;tbody&gt;
  643. &lt;tr&gt;
  644. &lt;td&gt;贤心1&lt;/td&gt;
  645. &lt;td&gt;66&lt;/td&gt;
  646. &lt;td&gt;人生就像是一场修行a&lt;/td&gt;
  647. &lt;/tr&gt;
  648. &lt;tr&gt;
  649. &lt;td&gt;贤心2&lt;/td&gt;
  650. &lt;td&gt;88&lt;/td&gt;
  651. &lt;td&gt;人生就像是一场修行b&lt;/td&gt;
  652. &lt;/tr&gt;
  653. &lt;tr&gt;
  654. &lt;td&gt;贤心3&lt;/td&gt;
  655. &lt;td&gt;33&lt;/td&gt;
  656. &lt;td&gt;人生就像是一场修行c&lt;/td&gt;
  657. &lt;/tr&gt;
  658. &lt;/tbody&gt;
  659. &lt;/table&gt;
  660. </pre>
  661. <div class="site-text">
  662. <p>然后执行用于转换表格的JS方法,就可以达到目的了:</p>
  663. </div>
  664. <pre class="layui-code" lay-title="JavaScript">
  665. var table = layui.table;
  666. //转换静态表格
  667. table.init('demo', {
  668. height: 315 //设置高度
  669. ,limit: 10 //<span style="color: #FF5722">注意:请务必确保 limit 参数(默认:10)是与你服务端限定的数据条数一致</span>
  670. //支持所有基础参数
  671. });
  672. </pre>
  673. <div class="site-text">
  674. <p>在前面的“方法渲染”和“自动渲染”两种方式中,你的数据都来源于异步的接口,这可能并不利于所谓的seo(当然是针对于前台页面)。而在这里,你的数据已和页面同步输出,却仍然可以转换成动态表格,是否感受到一丝惬意呢?</p>
  675. </div>
  676. <fieldset class="layui-elem-field layui-field-title site-title">
  677. <legend><a name="options">基础参数一览表</a></legend>
  678. </fieldset>
  679. <div class="site-text">
  680. <p>基础参数并非所有都要出现,有必选也有可选,结合你的实际需求自由设定。基础参数一般出现在以下几种场景中:</p>
  681. <pre class="layui-code">
  682. 场景一:下述方法中的键值即为基础参数项
  683. table.render({
  684. height: 300
  685. ,url: '/api/data'
  686. });
  687. 场景二:下述 lay-data 里面的内容即为基础参数项,切记:值要用单引号
  688. &lt;table lay-data="{height:300, url:'/api/data'}" lay-filter=&quot;demo&quot;&gt; …… &lt;/table&gt;
  689. 更多场景:下述 options 即为含有基础参数项的对象
  690. > table.init('filter', options); //转化静态表格
  691. > var tableObj = table.render({});
  692. tableObj.reload(options); //重载表格
  693. </pre>
  694. <p>下面是目前 table 模块所支持的全部参数一览表,我们对重点参数进行了的详细说明,你可以点击下述表格最右侧的“示例”去查看</p>
  695. <table class="layui-table">
  696. <colgroup>
  697. <col width="100">
  698. <col width="100">
  699. <col>
  700. <col width="150">
  701. </colgroup>
  702. <thead>
  703. <tr>
  704. <th>参数</th>
  705. <th>类型</th>
  706. <th>说明</th>
  707. <th>示例值</th>
  708. </tr>
  709. </thead>
  710. <tbody>
  711. <tr>
  712. <td>elem</td>
  713. <td>String/DOM</td>
  714. <td>指定原始 table 容器的选择器或 DOM,方法渲染方式必填</td>
  715. <td>"#demo"</td>
  716. </tr>
  717. <tr>
  718. <td>cols</td>
  719. <td>Array</td>
  720. <td>设置表头。值是一个二维数组。方法渲染方式必填</td>
  721. <td><a href="#cols">详见表头参数</a></td>
  722. </tr>
  723. <tr>
  724. <td>url(等)</td>
  725. <td>-</td>
  726. <td>异步数据接口相关参数。其中 url 参数为必填项</td>
  727. <td><a href="#async">详见异步参数</a></td>
  728. </tr>
  729. <tr>
  730. <td>toolbar</td>
  731. <td>String/DOM/Boolean</td>
  732. <td class="layui-text">
  733. <a name="toolbar"> </a>
  734. 开启表格头部工具栏区域,该参数支持四种类型值:
  735. <ul>
  736. <li>toolbar: '#toolbarDemo' <em>//指向自定义工具栏模板选择器</em></li>
  737. <li>toolbar: '&lt;div&gt;xxx&lt;/div&gt;' <em>//直接传入工具栏模板字符</em></li>
  738. <li>toolbar: true <em>//仅开启工具栏,不显示左侧模板</em></li>
  739. <li>toolbar: 'default' <em>//让工具栏左侧显示默认的内置模板</em></li>
  740. </ul>
  741. <div style="color: #FF5722;">
  742. 注意:
  743. <br>1. 该参数为 layui 2.4.0 开始新增。
  744. <br>2. 若需要“列显示隐藏”、“导出”、“打印”等功能,则必须开启该参数
  745. </div>
  746. </td>
  747. <td>false</td>
  748. </tr>
  749. <tr>
  750. <td>defaultToolbar</td>
  751. <td>Array</td>
  752. <td class="layui-text">
  753. 该参数可自由配置头部工具栏右侧的图标按钮
  754. </td>
  755. <td>
  756. <a href="#defaultToolbar">详见头工具栏图标</a>
  757. </td>
  758. </tr>
  759. <tr>
  760. <td>width</td>
  761. <td>Number</td>
  762. <td>设定容器宽度。table容器的默认宽度是跟随它的父元素铺满,你也可以设定一个固定值,当容器中的内容超出了该宽度时,会自动出现横向滚动条。</td>
  763. <td>1000</td>
  764. </tr>
  765. <tr>
  766. <td>height</td>
  767. <td>Number/String</td>
  768. <td>设定容器高度</td>
  769. <td><a href="#height">详见height</a></td>
  770. </tr>
  771. <tr>
  772. <td>cellMinWidth</td>
  773. <td>Number</td>
  774. <td>(layui 2.2.1 新增)全局定义所有常规单元格的最小宽度(默认:60),一般用于列宽自动分配的情况。其优先级低于表头参数中的 minWidth</td>
  775. <td>100</td>
  776. </tr>
  777. <tr>
  778. <td>done</td>
  779. <td>Function</td>
  780. <td>数据渲染完的回调。你可以借此做一些其它的操作</td>
  781. <td><a href="#done">详见 done 回调</a></td>
  782. </tr>
  783. <tr>
  784. <td>error</td>
  785. <td>Function</td>
  786. <td>
  787. 数据请求失败的回调,返回两个参数:错误对象、内容
  788. <br> <span class="layui-font-red">layui 2.6.0 新增</span>
  789. </td>
  790. <td>-</td>
  791. </tr>
  792. <tr>
  793. <td>data</td>
  794. <td>Array</td>
  795. <td>直接赋值数据。既适用于只展示一页数据,也非常适用于对一段已知数据进行多页展示。</td>
  796. <td>[{}, {}, {}, {}, …]</td>
  797. </tr>
  798. <tr>
  799. <td>escape</td>
  800. <td>Boolean</td>
  801. <td>是否开启 xss 字符过滤(默认 false)<span class="layui-font-red">layui 2.6.8 新增</span></td>
  802. <td>true</td>
  803. </tr>
  804. <tr>
  805. <td>totalRow</td>
  806. <td>Boolean/String</td>
  807. <td>是否开启合计行区域</td>
  808. <td>false</td>
  809. </tr>
  810. <tr>
  811. <td>page</td>
  812. <td>Boolean/Object</td>
  813. <td>开启分页(默认:false)。支持传入一个对象,里面可包含 <a href="laypage.html#options" tppabs="http://www.layui.com/doc/modules/laypage.html#options">laypage</a> 组件所有支持的参数(jump、elem除外)</td>
  814. <td>{theme: '#c00'}</td>
  815. </tr>
  816. <tr>
  817. <td>limit</td>
  818. <td>Number</td>
  819. <td>
  820. 每页显示的条数(默认 10)。值需对应 limits 参数的选项。
  821. <br>注意:<em>优先级低于 page 参数中的 limit 参数</em>
  822. </td>
  823. <td>30</td>
  824. </tr>
  825. <tr>
  826. <td>limits</td>
  827. <td>Array</td>
  828. <td>
  829. 每页条数的选择项,默认:[10,20,30,40,50,60,70,80,90]。
  830. <br>注意:<em>优先级低于 page 参数中的 limits 参数</em>
  831. </td>
  832. <td>[30,60,90]</td>
  833. </tr>
  834. <tr>
  835. <td>loading</td>
  836. <td>Boolean</td>
  837. <td>是否显示加载条(默认 true)。若为 false,则在切换分页时,不会出现加载条。该参数只适用于 url 参数开启的方式</td>
  838. <td>false</td>
  839. </tr>
  840. <tr>
  841. <td>title</td>
  842. <td>String</td>
  843. <td>定义 table 的大标题(在文件导出等地方会用到)</td>
  844. <td>"用户表"</td>
  845. </tr>
  846. <tr>
  847. <td>text</td>
  848. <td>Object</td>
  849. <td>自定义文本,如空数据时的异常提示等。</td>
  850. <td><a href="#text">详见自定义文本</a></td>
  851. </tr>
  852. <tr>
  853. <td>autoSort</td>
  854. <td>Boolean</td>
  855. <td>
  856. 默认 true,即直接由 table 组件在前端自动处理排序。
  857. <br>若为 false,则需自主排序,即由服务端返回排序好的数据
  858. </td>
  859. <td><a href="#onsort">详见事件排序</a></td>
  860. </tr>
  861. <tr>
  862. <td>initSort</td>
  863. <td>Object</td>
  864. <td>
  865. 初始排序状态。<br>用于在数据表格渲染完毕时,默认按某个字段排序。
  866. </td>
  867. <td><a href="#initSort">详见初始排序</a></td>
  868. </tr>
  869. <tr>
  870. <td>id</td>
  871. <td>String</td>
  872. <td>
  873. <a name="id"></a>
  874. 设定容器唯一 id。id 是对表格的数据操作方法上是必要的传递条件,它是表格容器的索引,你在下文诸多地方都将会见识它的存在。
  875. <br><br>另外,若该参数未设置,则默认从 <em>&lt;table id="test">&lt;/table></em> 中的 id 属性值中获取。
  876. </td>
  877. <td>test</td>
  878. </tr>
  879. <tr>
  880. <td>skin(等)</td>
  881. <td>-</td>
  882. <td>设定表格各种外观、尺寸等</td>
  883. <td><a href="#skin">详见表格风格</a></td>
  884. </tr>
  885. </tbody>
  886. </table>
  887. </div>
  888. <fieldset class="layui-elem-field layui-field-title site-title">
  889. <legend><a name="cols">cols - 表头参数一览表</a></legend>
  890. </fieldset>
  891. <div class="site-text">
  892. <p>
  893. 相信我,在你还尚无法驾驭 layui table 的时候,你的所有焦点都应放在这里,它带引领你完成许多可见和不可见甚至你无法想象的工作。如果你采用的是方法渲染,cols 是一个二维数组,表头参数设定在数组内;如果你采用的自动渲染,表头参数的设定应放在 <em>&lt;th></em> 标签上
  894. </p>
  895. <table class="layui-table">
  896. <colgroup>
  897. <col width="100">
  898. <col width="100">
  899. <col>
  900. <col width="150">
  901. </colgroup>
  902. <thead>
  903. <tr>
  904. <th>参数</th>
  905. <th>类型</th>
  906. <th>说明</th>
  907. <th>示例值</th>
  908. </tr>
  909. </thead>
  910. <tbody>
  911. <tr>
  912. <td>field</td>
  913. <td>String</td>
  914. <td>设定字段名。非常重要,且是表格数据列的唯一标识</td>
  915. <td>username</td>
  916. </tr>
  917. <tr>
  918. <td>title</td>
  919. <td>String</td>
  920. <td>设定标题名称</td>
  921. <td>用户名</td>
  922. </tr>
  923. <tr>
  924. <td>width</td>
  925. <td>Number/String</td>
  926. <td>
  927. 设定列宽,若不填写,则自动分配;若填写,则支持值为:数字、百分比。
  928. <br>请结合实际情况,对不同列做不同设定。
  929. </td>
  930. <td>200<br>30%</td>
  931. </tr>
  932. <tr>
  933. <td>minWidth</td>
  934. <td>Number</td>
  935. <td>局部定义当前常规单元格的最小宽度(默认:60),一般用于列宽自动分配的情况。其优先级高于基础参数中的 cellMinWidth</td>
  936. <td>100</td>
  937. </tr>
  938. <tr>
  939. <td>type</td>
  940. <td>String</td>
  941. <td class="layui-text">
  942. 设定列类型。可选值有:
  943. <ul>
  944. <li>normal(常规列,无需设定)</li>
  945. <li>checkbox(复选框列)</li>
  946. <li>radio(单选框列,<span style="color:#FF5722;">layui 2.4.0 新增</span>)</li>
  947. <li>numbers(序号列)</li>
  948. <li>space(空列)</li>
  949. </ul>
  950. </td>
  951. <td>任意一个可选值</td>
  952. </tr>
  953. <tr>
  954. <td>LAY_CHECKED</td>
  955. <td>Boolean</td>
  956. <td>是否全选状态(默认:false)。必须复选框列开启后才有效,如果设置 true,则表示复选框默认全部选中。</td>
  957. <td>true</td>
  958. </tr>
  959. <tr>
  960. <td>fixed</td>
  961. <td>String</td>
  962. <td>固定列。可选值有:<em>left</em>(固定在左)、<em>right</em>(固定在右)。一旦设定,对应的列将会被固定在左或右,不随滚动条而滚动。
  963. <br>
  964. 注意:<em>如果是固定在左,该列必须放在表头最前面;如果是固定在右,该列必须放在表头最后面。</em></td>
  965. <td>left(同 true)<br>right</td>
  966. </tr>
  967. <tr>
  968. <td>hide</td>
  969. <td>Boolean</td>
  970. <td>是否初始隐藏列,默认:false。<span style="color:#FF5722;">layui 2.4.0 新增</span></td>
  971. <td>true</td>
  972. </tr>
  973. <tr><td colspan="4"><a name="totalRow"> </a></td></tr>
  974. <tr>
  975. <td>
  976. <span>totalRow</span>
  977. </td>
  978. <td>Boolean/String</td>
  979. <td>
  980. <div class="layui-text">
  981. <ul>
  982. <li>是否开启该列的自动合计功能,默认:false。</li>
  983. <li>当开启时,则默认由前端自动合计当前行数据。<span style="color:#FF5722;">从 layui 2.5.6 开始:</span> 若接口直接返回了合计行数据,则优先读取接口合计行数据,格式如下:</li>
  984. </ul>
  985. </div>
  986. <pre class="layui-code" lay-skin="notepad" lay-height="90px">
  987. {
  988. "code": 0,
  989. "totalRow": {
  990. "score": "666"
  991. ,"experience": "999"
  992. },
  993. "data": [{}, {}],
  994. "msg": "",
  995. "count": 1000
  996. }
  997. </pre>
  998. <p>
  999. 如上,在 totalRow 中返回所需统计的列字段名和值即可。
  1000. <br>另外,totalRow 字段同样可以通过 parseData 回调来解析成为 table 组件所规定的数据格式。
  1001. </p>
  1002. <div class="layui-text">
  1003. <ul>
  1004. <li><span class="layui-font-red">从 layui 2.6.3 开始</span>,如果 totalRow 为一个 string 类型,则可解析为合计行的动态模板,如:</li>
  1005. </ul>
  1006. </div>
  1007. <pre class="layui-code">
  1008. totalRow: '{{ d.TOTAL_NUMS }} 单位'
  1009. //还比如只取整:'{{ parseInt(d.TOTAL_NUMS) }}'
  1010. </pre>
  1011. </td>
  1012. <td>true</td>
  1013. </tr>
  1014. <tr>
  1015. <td>totalRowText</td>
  1016. <td>String</td>
  1017. <td>用于显示自定义的合计文本。<span style="color:#FF5722;">layui 2.4.0 新增</span></td>
  1018. <td>"合计:"</td>
  1019. </tr>
  1020. <tr><td colspan="4"><a name="totalRow"> </a></td></tr>
  1021. <tr>
  1022. <td>sort</td>
  1023. <td>Boolean</td>
  1024. <td>
  1025. 是否允许排序(默认:false)。如果设置 true,则在对应的表头显示排序icon,从而对列开启排序功能。
  1026. <p>
  1027. 注意:<em>不推荐对值同时存在“数字和普通字符”的列开启排序,因为会进入字典序比对</em>。比如:<em>'贤心' &gt; '2' &gt; '100'</em>,这可能并不是你想要的结果,但字典序排列算法(ASCII码比对)就是如此。
  1028. </p>
  1029. </td>
  1030. <td>true</td>
  1031. </tr>
  1032. <tr>
  1033. <td>unresize</td>
  1034. <td>Boolean</td>
  1035. <td>
  1036. 是否禁用拖拽列宽(默认:false)。默认情况下会根据列类型(type)来决定是否禁用,如复选框列,会自动禁用。而其它普通列,默认允许拖拽列宽,当然你也可以设置 true 来禁用该功能。
  1037. </td>
  1038. <td>false</td>
  1039. </tr>
  1040. <tr>
  1041. <td>edit</td>
  1042. <td>String</td>
  1043. <td>单元格编辑类型(默认不开启)目前只支持:<em>text</em>(输入框)</td>
  1044. <td>text</td>
  1045. </tr>
  1046. <tr>
  1047. <td>event</td>
  1048. <td>String</td>
  1049. <td>自定义单元格点击事件名,以便在 <a href="#ontool">tool</a> 事件中完成对该单元格的业务处理</td>
  1050. <td>任意字符</td>
  1051. </tr>
  1052. <tr>
  1053. <td>style</td>
  1054. <td>String</td>
  1055. <td>自定义单元格样式。即传入 CSS 样式</td>
  1056. <td>background-color: #5FB878; color: #fff;</td>
  1057. </tr>
  1058. <tr>
  1059. <td>align</td>
  1060. <td>String</td>
  1061. <td>单元格排列方式。可选值有:<em>left</em>(默认)、<em>center</em>(居中)、<em>right</em>(居右)</td>
  1062. <td>center</td>
  1063. </tr>
  1064. <tr>
  1065. <td>colspan</td>
  1066. <td>Number</td>
  1067. <td>单元格所占列数(默认:1)。一般用于多级表头</td>
  1068. <td>3</td>
  1069. </tr>
  1070. <tr>
  1071. <td>rowspan</td>
  1072. <td>Number</td>
  1073. <td>单元格所占行数(默认:1)。一般用于多级表头</td>
  1074. <td>2</td>
  1075. </tr>
  1076. <tr>
  1077. <td>templet</td>
  1078. <td>String</td>
  1079. <td>自定义列模板,模板遵循 <a href="laytpl.html" tppabs="http://www.layui.com/doc/modules/laytpl.html" target="_blank">laytpl</a> 语法。这是一个非常实用的功能,你可借助它实现逻辑处理,以及将原始数据转化成其它格式,如时间戳转化为日期字符等</td>
  1080. <td><a href="#templet">详见自定义模板</a></td>
  1081. </tr>
  1082. <tr>
  1083. <td>toolbar</td>
  1084. <td>String</td>
  1085. <td>绑定工具条模板。可在每行对应的列中出现一些自定义的操作性按钮</td>
  1086. <td><a href="#onrowtool">详见行工具事件</a></td>
  1087. </tr>
  1088. </tbody>
  1089. </table>
  1090. <p>下面是一些方法渲染和自动渲染的配置方式:</p>
  1091. <pre class="layui-code">
  1092. //方法渲染:
  1093. table.render({
  1094. cols: [[ //标题栏
  1095. {checkbox: true}
  1096. ,{field: 'id', title: 'ID', width: 80}
  1097. ,{field: 'username', title: '用户名', width: 120}
  1098. ]]
  1099. });
  1100. 它等价于自动渲染:
  1101. &lt;table class=&quot;layui-table&quot; lay-data=&quot;{基础参数}&quot; lay-filter=&quot;test&quot;&gt;
  1102. &lt;thead&gt;
  1103. &lt;tr&gt;
  1104. &lt;th lay-data=&quot;{checkbox:true}&quot;&gt;&lt;/th&gt;
  1105. &lt;th lay-data=&quot;{field:&#x27;id&#x27;, width:80}&quot;&gt;ID&lt;/th&gt;
  1106. &lt;th lay-data=&quot;{field:&#x27;username&#x27;, width:180}&quot;&gt;用户名&lt;/th&gt;
  1107. &lt;/tr&gt;
  1108. &lt;/thead&gt;
  1109. &lt;/table&gt;
  1110. </pre>
  1111. <p>以下是一个二级表头的例子:</p>
  1112. <pre class="layui-code">
  1113. JS:
  1114. table.render({
  1115. cols: [[ //标题栏
  1116. {field: 'username', title: '联系人', width: 80, rowspan: 2} //rowspan即纵向跨越的单元格数
  1117. ,{field: 'amount', title: '金额', width: 80, rowspan: 2}
  1118. ,{align: 'center', title: '地址', colspan: 3} //colspan即横跨的单元格数,这种情况下不用设置field和width
  1119. ], [
  1120. {field: 'province', title: '省', width: 80}
  1121. ,{field: 'city', title: '市', width: 120}
  1122. ,{field: 'county', title: '详细', width: 300}
  1123. ]]
  1124. });
  1125. 它等价于:
  1126. &lt;table class=&quot;layui-table&quot; lay-data=&quot;{基础参数}&quot;&gt;
  1127. &lt;thead&gt;
  1128. &lt;tr&gt;
  1129. &lt;th lay-data=&quot;{field:&#x27;username&#x27;, width:80}&quot; rowspan=&quot;2&quot;&gt;联系人&lt;/th&gt;
  1130. &lt;th lay-data=&quot;{field:&#x27;amount&#x27;, width:120}&quot; rowspan=&quot;2&quot;&gt;金额&lt;/th&gt;
  1131. &lt;th lay-data=&quot;{align:&#x27;center&#x27;}&quot; colspan=&quot;3&quot;&gt;地址&lt;/th&gt;
  1132. &lt;/tr&gt;
  1133. &lt;tr&gt;
  1134. &lt;th lay-data=&quot;{field:&#x27;province&#x27;, width:80}&quot;&gt;省&lt;/th&gt;
  1135. &lt;th lay-data=&quot;{field:&#x27;city&#x27;, width:120}&quot;&gt;市&lt;/th&gt;
  1136. &lt;th lay-data=&quot;{field:&#x27;county&#x27;, width:300}&quot;&gt;详细&lt;/th&gt;
  1137. &lt;/tr&gt;
  1138. &lt;/thead&gt;
  1139. &lt;/table&gt;
  1140. </pre>
  1141. <p>需要说明的是,table 组件支持无限极表头,你可按照上述的方式继续扩充。核心点在于 <em>rowspan</em> 和 <em>colspan</em> 两个参数的使用。</p>
  1142. </div>
  1143. <fieldset class="layui-elem-field layui-field-title site-title">
  1144. <legend><a name="templet">templet - 自定义列模板</a></legend>
  1145. </fieldset>
  1146. <div class="site-text">
  1147. <p>类型:<em>String</em>,默认值:<em>无</em></p>
  1148. <p>在默认情况下,单元格的内容是完全按照数据接口返回的content原样输出的,如果你想对某列的单元格添加链接等其它元素,你可以借助该参数来轻松实现。这是一个非常实用且强大的功能,你的表格内容会因此而丰富多样。</p>
  1149. <blockquote class="layui-elem-quote layui-quote-nm layui-text" style="margin: 20px 0;">
  1150. templet 提供了三种使用方式,请结合实际场景选择最合适的一种:
  1151. <ul>
  1152. <li>如果自定义模版的字符量太大,我们推荐你采用【方式一】;</li>
  1153. <li>如果自定义模板的字符量适中,或者想更方便地调用外部方法,我们推荐你采用【方式二】;</li>
  1154. <li>如果自定义模板的字符量很小,我们推荐你采用【方式三】</li>
  1155. </ul>
  1156. </blockquote>
  1157. <p><strong>方式一:绑定模版选择器。</strong></p>
  1158. <pre class="layui-code">
  1159. table.render({
  1160. cols: [[
  1161. {field:'title', title: '文章标题', width: 200, templet: '#titleTpl'} //这里的templet值是模板元素的选择器
  1162. ,{field:'id', title:'ID', width:100}
  1163. ]]
  1164. });
  1165. 等价于:
  1166. &lt;th lay-data=&quot;{field:'title', width: 200, templet: '#titleTpl'}&quot;&gt;文章标题&lt;/th&gt;
  1167. &lt;th lay-data=&quot;{field:'id', width:100}&quot;&gt;ID&lt;/th&gt;
  1168. </pre>
  1169. <p>下述是templet对应的模板,它可以存放在页面的任意位置。模板遵循于 <a href="laytpl.html" tppabs="http://www.layui.com/doc/modules/laytpl.html" target="_blank">laytpl</a> 语法,可读取到返回的所有数据</p>
  1170. <pre class="layui-code" lay-title="HTML">
  1171. &lt;script type="text/html" id="titleTpl"&gt;
  1172. &lt;a href="/detail/{{d.id}}" class="layui-table-link">{{d.title}}&lt;/a>
  1173. &lt;/script>
  1174. <span class="layui-font-red">注意:上述的 {{d.id}}、{{d.title}} 是动态内容,它对应数据接口返回的字段名。除此之外,你还可以读取到以下额外字段:<br> 序号:{{ d.LAY_INDEX }} <br> 当前列的表头信息:{{ d.LAY_COL }} (layui 2.6.8 新增)</span>
  1175. 由于模板遵循 laytpl 语法(建议细读 <em>laytpl文档</em> ),因此在模板中你可以写任意脚本语句(如 if else/for等):
  1176. &lt;script type="text/html" id="titleTpl"&gt;
  1177. {{# if(d.id < 100){ }}
  1178. &lt;a href="/detail/{{d.id}}" class="layui-table-link">{{d.title}}&lt;/a>
  1179. {{# } else { }}
  1180. {{d.title}}(普通用户)
  1181. {{# } }}
  1182. &lt;/script>
  1183. </pre>
  1184. <p><strong>方式二:函数转义。</strong>templet 若未函数,则返回一个参数 d(包含当前行数据及特定的额外字段)。如下所示:</p>
  1185. <pre class="layui-code">
  1186. table.render({
  1187. cols: [[
  1188. {field:'title', title: '文章标题', width: 200
  1189. ,templet: function(d){
  1190. console.log(d.LAY_INDEX); //得到序号。一般不常用
  1191. console.log(d.LAY_COL); //得到当前列表头配置信息(layui 2.6.8 新增)。一般不常用
  1192. //得到当前行数据,并拼接成自定义模板
  1193. return 'ID:'+ d.id +',标题:&lt;span style="color: #c00;">'+ d.title +'&lt;/span>'
  1194. }
  1195. }
  1196. ,{field:'id', title:'ID', width:100}
  1197. ]]
  1198. });
  1199. </pre>
  1200. <p><strong>方式三:直接赋值模版字符。</strong>事实上,templet 也可以直接是一段 html 内容,如:</p>
  1201. <pre class="layui-code">
  1202. templet: '&lt;div>&lt;a href="/detail/{{d.id}}" class="layui-table-link">{{d.title}}&lt;/a>&lt;/div>'
  1203. 注意:这里一定要被一层 <em>&lt;div>&lt;/div></em> 包裹,否则无法读取到模板
  1204. </pre>
  1205. </div>
  1206. <fieldset class="layui-elem-field layui-field-title site-title">
  1207. <legend><a name="onrowtool">toolbar - 绑定工具条模板</a></legend>
  1208. </fieldset>
  1209. <div class="site-text">
  1210. <p>类型:<em>String</em>,默认值:<em>无</em></p>
  1211. <p>通常你需要在表格的每一行加上 <em>查看</em>、<em>编辑</em>、<em>删除</em> 这样类似的操作按钮,而 tool 参数就是为此而生,你因此可以非常便捷地实现各种操作功能。<strong>tool 参数和 templet 参数的使用方式完全类似</strong>,通常接受的是一个选择器,也可以是一段HTML字符。</p>
  1212. <pre class="layui-code">
  1213. table.render({
  1214. cols: [[
  1215. {field:'id', title:'ID', width:100}
  1216. ,{fixed: 'right', width:150, align:'center', toolbar: '#barDemo'} //这里的toolbar值是模板元素的选择器
  1217. ]]
  1218. });
  1219. 等价于:
  1220. &lt;th lay-data=&quot;{field:'id', width:100}&quot;&gt;ID&lt;/th&gt;
  1221. &lt;th lay-data=&quot;{fixed: 'right', width:150, align:'center', toolbar: '#barDemo'}&quot;&gt;&lt;/th&gt;
  1222. </pre>
  1223. <a name="ontool"></a>
  1224. <p>下述是 toolbar 对应的模板,它可以存放在页面的任意位置:</p>
  1225. <pre class="layui-code"" lay-title="HTML">
  1226. &lt;script type="text/html" id="barDemo"&gt;
  1227. &lt;a class="layui-btn layui-btn-xs" lay-event="detail">查看&lt;/a>
  1228. &lt;a class="layui-btn layui-btn-xs" lay-event="edit">编辑&lt;/a>
  1229. &lt;a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除&lt;/a>
  1230. &lt;!-- 这里同样支持 laytpl 语法,如: --&gt;
  1231. {{# if(d.auth > 2){ }}
  1232. &lt;a class="layui-btn layui-btn-xs" lay-event="check">审核&lt;/a>
  1233. {{# } }}
  1234. &lt;/script>
  1235. 注意:属性 <em>lay-event=""</em> 是模板的关键所在,值可随意定义。
  1236. </pre>
  1237. <p>接下来我们可以借助 table模块的工具条事件,完成不同的操作功能:</p>
  1238. <a name="ontoolCallback"></a>
  1239. <pre class="layui-code">
  1240. //工具条事件
  1241. table.on('tool(test)', function(obj){ //注:tool 是工具条事件名,test 是 table 原始容器的属性 lay-filter="对应的值"
  1242. var data = obj.data; //获得当前行数据
  1243. var layEvent = obj.event; //获得 lay-event 对应的值(<em style="color: #FF5722;">也可以是表头的 event 参数对应的值</em>)
  1244. var tr = obj.tr; //获得当前行 tr 的 DOM 对象(如果有的话)
  1245. if(layEvent === 'detail'){ //查看
  1246. //do somehing
  1247. } else if(layEvent === 'del'){ //删除
  1248. layer.confirm('真的删除行么', function(index){
  1249. obj.del(); //<span style="color: #FF5722;">删除对应行(tr)的DOM结构,并更新缓存</span>
  1250. layer.close(index);
  1251. //向服务端发送删除指令
  1252. });
  1253. } else if(layEvent === 'edit'){ //编辑
  1254. //do something
  1255. //<span style="color: #FF5722;">同步更新缓存对应的值</span>
  1256. obj.update({
  1257. username: '123'
  1258. ,title: 'xxx'
  1259. });
  1260. } else if(layEvent === 'LAYTABLE_TIPS'){
  1261. layer.alert('Hi,头部工具栏扩展的右侧图标。');
  1262. }
  1263. });
  1264. </pre>
  1265. </div>
  1266. <fieldset class="layui-elem-field layui-field-title site-title">
  1267. <legend><a name="async">异步数据参数</a></legend>
  1268. </fieldset>
  1269. <div class="site-text">
  1270. <p>数据的异步请求由以下几个参数组成:</p>
  1271. <table class="layui-table">
  1272. <colgroup>
  1273. <col width="100">
  1274. <col>
  1275. </colgroup>
  1276. <thead>
  1277. <tr>
  1278. <th>参数名</th>
  1279. <th>功能</th>
  1280. </tr>
  1281. </thead>
  1282. <tbody>
  1283. <tr>
  1284. <td>url</td>
  1285. <td>
  1286. 接口地址。默认会自动传递两个参数:<em>?page=1&limit=30</em>(该参数可通过 request 自定义)
  1287. <br><em>page</em> 代表当前页码、<em>limit</em> 代表每页数据量
  1288. </td>
  1289. </tr>
  1290. <tr>
  1291. <td>method</td>
  1292. <td>接口http请求类型,默认:get</td>
  1293. </tr>
  1294. <tr>
  1295. <td>where</td>
  1296. <td>接口的其它参数。如:<em>where: {token: 'sasasas', id: 123}</em></td>
  1297. </tr>
  1298. <tr>
  1299. <td>contentType</td>
  1300. <td>发送到服务端的内容编码类型。如果你要发送 json 内容,可以设置:<em>contentType: 'application/json'</em></td>
  1301. </tr>
  1302. <tr>
  1303. <td>headers</td>
  1304. <td>接口的请求头。如:<em>headers: {token: 'sasasas'}</em></td>
  1305. </tr>
  1306. <tr><td colspan="4"><a name="parseData"> </a></td></tr>
  1307. <tr>
  1308. <td><strong>parseData</strong></td>
  1309. <td>
  1310. <p>数据格式解析的回调函数,用于将返回的任意数据格式解析成 table 组件规定的数据格式。</p>
  1311. <p>table 组件默认规定的数据格式为(参考:<a href="../../demo/table/user/-page=1&limit=30.js" tppabs="http://www.layui.com/demo/table/user/?page=1&limit=30" target="_blank">/demo/table/user/</a>):</p>
  1312. <pre class="layui-code" lay-title="默认规定的数据格式" lay-skin="notepad">
  1313. {
  1314. "code": 0,
  1315. "msg": "",
  1316. "count": 1000,
  1317. "data": [{}, {}]
  1318. }
  1319. </pre>
  1320. <p>很多时候,您接口返回的数据格式并不一定都符合 table 默认规定的格式,比如:</p>
  1321. <pre class="layui-code" lay-skin="notepad" lay-title="假设您返回的数据格式">
  1322. {
  1323. "status": 0,
  1324. "message": "",
  1325. "total": 180,
  1326. "data": {
  1327. "item": [{}, {}]
  1328. }
  1329. }
  1330. </pre>
  1331. <p>那么你需要借助 parseData 回调函数将其解析成 table 组件所规定的数据格式</p>
  1332. <pre class="layui-code">
  1333. table.render({
  1334. elem: '#demp'
  1335. ,url: ''
  1336. ,parseData: function(res){ //res 即为原始返回的数据
  1337. return {
  1338. "code": res.status, //解析接口状态
  1339. "msg": res.message, //解析提示文本
  1340. "count": res.total, //解析数据长度
  1341. "data": res.data.item //解析数据列表
  1342. };
  1343. }
  1344. //,…… //其他参数
  1345. });
  1346. </pre>
  1347. <p><span style="color:#FF5722;">该参数非常实用,系 layui 2.4.0 开始新增</span></p>
  1348. </td>
  1349. </tr>
  1350. <tr>
  1351. <td>request</td>
  1352. <td>
  1353. 用于对分页请求的参数:page、limit重新设定名称,如:
  1354. <pre class="layui-code">
  1355. table.render({
  1356. elem: '#demp'
  1357. ,url: ''
  1358. ,request: {
  1359. pageName: 'curr' //页码的参数名称,默认:page
  1360. ,limitName: 'nums' //每页数据量的参数名,默认:limit
  1361. }
  1362. //,…… //其他参数
  1363. });
  1364. </pre>
  1365. 那么请求数据时的参数将会变为:<em>?curr=1&nums=30</em>
  1366. </td>
  1367. </tr>
  1368. <tr>
  1369. <td>response</td>
  1370. <td>
  1371. <a name="response"> </a>
  1372. <p>您还可以借助 response 参数来重新设定返回的数据格式,如:</p>
  1373. <pre class="layui-code">
  1374. table.render({
  1375. elem: '#demp'
  1376. ,url: ''
  1377. ,response: {
  1378. statusName: 'status' //规定数据状态的字段名称,默认:code
  1379. ,statusCode: 200 //规定成功的状态码,默认:0
  1380. ,msgName: 'hint' //规定状态信息的字段名称,默认:msg
  1381. ,countName: 'total' //规定数据总数的字段名称,默认:count
  1382. ,dataName: 'rows' //规定数据列表的字段名称,默认:data
  1383. }
  1384. //,…… //其他参数
  1385. });
  1386. </pre>
  1387. 那么上面所规定的格式为:
  1388. <pre class="layui-code" lay-title="重新规定的数据格式" lay-skin="notepad">
  1389. {
  1390. "status": 200,
  1391. "hint": "",
  1392. "total": 1000,
  1393. "rows": []
  1394. }
  1395. </pre>
  1396. </td>
  1397. </tr>
  1398. </tbody>
  1399. </table>
  1400. <p>注意:<em>request 和 response 参数均为 layui 2.1.0 版本新增</em></p>
  1401. <p>调用示例:</p>
  1402. <pre class="layui-code">
  1403. //“方法级渲染”配置方式
  1404. table.render({ //其它参数在此省略
  1405. url: '/api/data/'
  1406. //where: {token: 'sasasas', id: 123} //如果无需传递额外参数,可不加该参数
  1407. //method: 'post' //如果无需自定义HTTP类型,可不加该参数
  1408. //request: {} //如果无需自定义请求参数,可不加该参数
  1409. //response: {} //如果无需自定义数据响应名称,可不加该参数
  1410. });
  1411. 等价于(“自动化渲染”配置方式)
  1412. &lt;table class=&quot;layui-table&quot; lay-data=&quot;{url:'/api/data/'}&quot; lay-filter=&quot;test&quot;&gt; …… &lt;/table&gt;
  1413. </pre>
  1414. </div>
  1415. <fieldset class="layui-elem-field layui-field-title site-title">
  1416. <legend><a name="done">done - 数据渲染完的回调</a></legend>
  1417. </fieldset>
  1418. <div class="site-text">
  1419. <p>类型:<em>Function</em>,默认值:<em>无</em></p>
  1420. <p>无论是异步请求数据,还是直接赋值数据,都会触发该回调。你可以利用该回调做一些表格以外元素的渲染。</p>
  1421. <pre class="layui-code">
  1422. table.render({ //其它参数在此省略
  1423. done: function(res, curr, count){
  1424. //如果是异步请求数据方式,res即为你接口返回的信息。
  1425. //如果是直接赋值的方式,res即为:{data: [], count: 99} data为当前页数据、count为数据总长度
  1426. console.log(res);
  1427. //得到当前页码
  1428. console.log(curr);
  1429. //得到数据总量
  1430. console.log(count);
  1431. }
  1432. });
  1433. </pre>
  1434. </div>
  1435. <fieldset class="layui-elem-field layui-field-title site-title">
  1436. <legend><a name="defaultToolbar">defaultToolbar - 头部工具栏右侧图标</a></legend>
  1437. </fieldset>
  1438. <div class="site-text">
  1439. <p>类型:<em>Array</em>,默认值:<em>["filter","exports","print"]</em></p>
  1440. <div class="layui-text">
  1441. 该参数可自由配置头部工具栏右侧的图标按钮,值为一个数组,支持以下可选值:
  1442. <ul>
  1443. <li>filter: <em>显示筛选图标</em></li>
  1444. <li>exports: <em>显示导出图标</em></li>
  1445. <li>print: <em>显示打印图标</em></li>
  1446. </ul>
  1447. </div>
  1448. <blockquote class="layui-elem-quote layui-quote-nm">
  1449. <p>可根据值的顺序显示排版图标,如:</p>
  1450. <em>defaultToolbar: ['filter', 'print', 'exports']</em>
  1451. </blockquote>
  1452. <p>另外你还可以无限扩展图标按钮(<span style="color: #FF5722;">layui 2.5.5 新增</span>):</p>
  1453. <pre class="layui-code">
  1454. table.render({ //其它参数在此省略
  1455. defaultToolbar: ['filter', 'print', 'exports', {
  1456. title: '提示' //标题
  1457. ,layEvent: 'LAYTABLE_TIPS' //事件名,用于 toolbar 事件中使用
  1458. ,icon: 'layui-icon-tips' //图标类名
  1459. }]
  1460. });
  1461. </pre>
  1462. <p>扩展的图标可通过 toolbar 事件回调(<a href="#ontoolbar">详见行工具事件</a>),其中 <em>layEvent</em> 的值会在事件的回调参数中返回,以便区分不同的触发动作。</p>
  1463. </div>
  1464. <fieldset class="layui-elem-field layui-field-title site-title">
  1465. <legend><a name="text">text - 自定义文本</a></legend>
  1466. </fieldset>
  1467. <div class="site-text">
  1468. <p>类型:<em>Object</em></p>
  1469. <p>table 模块会内置一些默认的文本信息,如果想修改,你可以设置以下参数达到目的。</p>
  1470. <pre class="layui-code">
  1471. table.render({ //其它参数在此省略
  1472. text: {
  1473. none: '暂无相关数据' //默认:无数据。
  1474. }
  1475. });
  1476. </pre>
  1477. </div>
  1478. <fieldset class="layui-elem-field layui-field-title site-title">
  1479. <legend><a name="initSort">initSort - 初始排序</a></legend>
  1480. </fieldset>
  1481. <div class="site-text">
  1482. <p>类型:<em>Object</em>,默认值:<em>无</em></p>
  1483. <p>用于在数据表格渲染完毕时,默认按某个字段排序。注:<em>该参数为 layui 2.1.1 新增</em></p>
  1484. <pre class="layui-code">
  1485. //“方法级渲染”配置方式
  1486. table.render({ //其它参数在此省略
  1487. initSort: {
  1488. field: 'id' //排序字段,对应 cols 设定的各字段名
  1489. ,type: 'desc' //排序方式 asc: 升序、desc: 降序、null: 默认排序
  1490. }
  1491. });
  1492. 等价于(“自动化渲染”配置方式)
  1493. &lt;table class=&quot;layui-table&quot; lay-data=&quot;{initSort:{field:'id', type:'desc'}}&quot; lay-filter=&quot;test&quot;&gt; …… &lt;/table&gt;
  1494. </pre>
  1495. </div>
  1496. <fieldset class="layui-elem-field layui-field-title site-title">
  1497. <legend><a name="height">height - 设定容器高度</a></legend>
  1498. </fieldset>
  1499. <div class="site-text">
  1500. <p>类型:<em>Number/String</em>,可选值如下:</p>
  1501. <table class="layui-table">
  1502. <colgroup>
  1503. <col width="100">
  1504. <col>
  1505. <col width="150">
  1506. </colgroup>
  1507. <thead>
  1508. <tr>
  1509. <th>可选值</th>
  1510. <th>说明</th>
  1511. <th>示例</th>
  1512. </tr>
  1513. </thead>
  1514. <tbody>
  1515. <tr>
  1516. <td>不填写</td>
  1517. <td>默认情况。高度随数据列表而适应,表格容器不会出现纵向滚动条</td>
  1518. <td>-</td>
  1519. </tr>
  1520. <tr>
  1521. <td>固定值</td>
  1522. <td>设定一个数字,用于定义容器高度,当容器中的内容超出了该高度时,会自动出现纵向滚动条</td>
  1523. <td>height: 315</td>
  1524. </tr>
  1525. <tr>
  1526. <td>full-差值</td>
  1527. <td>
  1528. 高度将始终铺满,无论浏览器尺寸如何。这是一个特定的语法格式,其中 <em>full</em> 是固定的,而 <em>差值</em> 则是一个数值,这需要你来预估,比如:表格容器距离浏览器顶部和底部的距离“和”
  1529. <br>PS:<em>该功能为 layui 2.1.0 版本中新增 </em>
  1530. </td>
  1531. <td>height: 'full-20'</td>
  1532. </tr>
  1533. </tbody>
  1534. </table>
  1535. <p>示例:</p>
  1536. <pre class="layui-code">
  1537. //“方法级渲染”配置方式
  1538. table.render({ //其它参数在此省略
  1539. height: 315 //固定值
  1540. });
  1541. table.render({ //其它参数在此省略
  1542. height: 'full-20' //高度最大化减去差值
  1543. });
  1544. 等价于(“自动化渲染”配置方式)
  1545. &lt;table class=&quot;layui-table&quot; lay-data=&quot;{height:315}&quot; lay-filter=&quot;test&quot;&gt; …… &lt;/table&gt;
  1546. &lt;table class=&quot;layui-table&quot; lay-data=&quot;{height:'full-20'}&quot; lay-filter=&quot;test&quot;&gt; …… &lt;/table&gt;
  1547. </pre>
  1548. </div>
  1549. <fieldset class="layui-elem-field layui-field-title site-title">
  1550. <legend><a name="skin">设定表格外观</a></legend>
  1551. </fieldset>
  1552. <div class="site-text">
  1553. <p>控制表格外观的主要由以下参数组成:</p>
  1554. <table class="layui-table">
  1555. <colgroup>
  1556. <col width="100">
  1557. <col>
  1558. </colgroup>
  1559. <thead>
  1560. <tr>
  1561. <th>参数名</th>
  1562. <th>可选值</th>
  1563. <th>备注</th>
  1564. </tr>
  1565. </thead>
  1566. <tbody>
  1567. <tr>
  1568. <td>skin</td>
  1569. <td>
  1570. line (行边框风格)
  1571. <br>row (列边框风格)
  1572. <br>nob (无边框风格)
  1573. </td>
  1574. <td>用于设定表格风格,若使用默认风格不设置该属性即可</td>
  1575. </tr>
  1576. <tr>
  1577. <td>even</td>
  1578. <td>true/false</td>
  1579. <td>若不开启隔行背景,不设置该参数即可</td>
  1580. </tr>
  1581. <tr>
  1582. <td>size</td>
  1583. <td>
  1584. sm (小尺寸)
  1585. <br>lg (大尺寸)
  1586. </td>
  1587. <td>用于设定表格尺寸,若使用默认尺寸不设置该属性即可</td>
  1588. </tr>
  1589. </tbody>
  1590. </table>
  1591. <pre class="layui-code">
  1592. //“方法级渲染”配置方式
  1593. table.render({ //其它参数在此省略
  1594. skin: 'line' //行边框风格
  1595. ,even: true //开启隔行背景
  1596. ,size: 'sm' //小尺寸的表格
  1597. });
  1598. 等价于(“自动化渲染”配置方式)
  1599. &lt;table class=&quot;layui-table&quot; lay-data=&quot;{skin:'line', even:true, size:'sm'}&quot; lay-filter=&quot;test&quot;&gt; …… &lt;/table&gt;
  1600. </pre>
  1601. </div>
  1602. <fieldset class="layui-elem-field layui-field-title site-title">
  1603. <legend><a name="method">基础方法</a></legend>
  1604. </fieldset>
  1605. <div class="site-text">
  1606. <p>基础用法是table模块的关键组成部分,目前所开放的所有方法如下:</p>
  1607. <pre class="layui-code">
  1608. > table.set(options); //设定全局默认参数。options即各项基础参数
  1609. > table.on('event(filter)', callback); //事件。event为内置事件名(详见下文),filter为容器lay-filter设定的值
  1610. > table.init(filter, options); //filter为容器lay-filter设定的值,options即各项基础参数。例子见:<a href="#parseTable">转换静态表格</a>
  1611. > table.checkStatus(id); //获取表格选中行(下文会有详细介绍)。id 即为 id 参数对应的值
  1612. > table.render(options); //用于表格方法级渲染,核心方法。应该不用再过多解释了,详见:<a href="#methodRender">方法级渲染</a>
  1613. > table.reload(id, options, deep); //表格重载
  1614. > table.resize(id); //重置表格尺寸
  1615. > table.exportFile(id, data, type); //导出数据
  1616. > table.getData(id); //用于获取表格当前页的所有行数据(layui 2.6.0 开始新增)
  1617. </pre>
  1618. </div>
  1619. <fieldset class="layui-elem-field layui-field-title site-title">
  1620. <legend><a name="checkStatus">获取选中行</a></legend>
  1621. </fieldset>
  1622. <div class="site-text">
  1623. <p>
  1624. 该方法可获取到表格所有的选中行相关数据
  1625. <br>语法:<em>table.checkStatus('ID')</em>,其中 <em>ID</em> 为基础参数 id 对应的值(见:<a href="#id">设定容器唯一ID</a>),如:
  1626. </p>
  1627. <pre class="layui-code" lay-title="渲染方式">
  1628. 【自动化渲染】
  1629. &lt;table class="layui-table" lay-data="{id: 'idTest'}"&gt; …… &lt;/table&gt;
  1630. 【方法渲染】
  1631. table.render({ //其它参数省略
  1632. id: 'idTest'
  1633. });
  1634. </pre>
  1635. <pre class="layui-code" lay-title="调用">
  1636. var checkStatus = table.checkStatus('idTest'); //idTest 即为基础参数 id 对应的值
  1637. console.log(checkStatus.data) //获取选中行的数据
  1638. console.log(checkStatus.data.length) //获取选中行数量,可作为是否有选中行的条件
  1639. console.log(checkStatus.isAll ) //表格是否全选
  1640. </pre>
  1641. </div>
  1642. <fieldset class="layui-elem-field layui-field-title site-title">
  1643. <legend><a name="method-resize">重置表格尺寸</a></legend>
  1644. </fieldset>
  1645. <div class="site-text">
  1646. <p>
  1647. 该方法可重置表格尺寸和结构,其内部完成了:<em>固定列高度平铺</em>、<em>动态分配列宽</em>、<em>容器滚动条宽高补丁</em> 等操作。它一般用于特殊情况下(如“非窗口 resize”导致的表格父容器宽度变化而引发的列宽适配异常),以保证表格在此类特殊情况下依旧能友好展示。
  1648. </p>
  1649. <p>语法:<em>table.resize('ID')</em>,其中 <em>ID</em> 为基础参数 id 对应的值(见:<a href="#id">设定容器唯一ID</a>),如:
  1650. </p>
  1651. <pre class="layui-code">
  1652. table.render({ //其它参数省略
  1653. ,elem: '#demo'
  1654. //,…… //其它参数
  1655. ,id: 'idTest'
  1656. });
  1657. //执行表格“尺寸结构”的重置,一般写在对应的事件中
  1658. table.resize('idTest');
  1659. </pre>
  1660. </div>
  1661. <fieldset class="layui-elem-field layui-field-title site-title">
  1662. <legend><a name="reload">表格重载</a></legend>
  1663. </fieldset>
  1664. <div class="site-text">
  1665. <p>很多时候,你需要对表格进行重载。比如数据全局搜索。以下方法可以帮你轻松实现这类需求(可任选一种)。</p>
  1666. <table class="layui-table">
  1667. <colgroup>
  1668. <col width="220">
  1669. <col>
  1670. <col width="150">
  1671. </colgroup>
  1672. <thead>
  1673. <tr>
  1674. <td>语法</td>
  1675. <td>说明</td>
  1676. <td>适用场景</td>
  1677. </tr>
  1678. </thead>
  1679. <tbody>
  1680. <tr>
  1681. <td>table.reload(ID, options, deep)</td>
  1682. <td>
  1683. 参数 <em>ID</em> 即为基础参数id对应的值,见:<a href="#id">设定容器唯一ID</a>
  1684. <br>参数 <em>options</em> 即为各项基础参数
  1685. <br>参数 <em>deep</em>:是否采用深度重载(即参数深度克隆,也就是重载时始终携带初始时及上一次重载时的参数),默认 false
  1686. <br><span class="layui-font-red">注意:deep 参数为 layui 2.6.0 开始新增。</span>
  1687. </td>
  1688. <td>所有渲染方式</td>
  1689. </tr>
  1690. <tr>
  1691. <td>tableIns.reload(options, deep)</td>
  1692. <td>
  1693. 参数同上
  1694. <br>tableIns 可通过 var tableIns = table.render() 得到
  1695. </td>
  1696. <td>仅限方法级渲染</td>
  1697. </tr>
  1698. </tbody>
  1699. </table>
  1700. <blockquote class="layui-elem-quote">
  1701. <span class="layui-font-red">请注意:如果你在 2.6.0 之前版本已经习惯深度重载模式的</span>,现在请在第三个参数中,加上 true,如:</p>
  1702. <blockquote class="layui-elem-quote">
  1703. table.reload(ID, options, <span class="layui-font-red">true</span>); //这样就跟 <span class="layui-font-red">v2.5.7</span> 及之前版本处理机制完全一样。或者您也可以像下面这样做:
  1704. </blockquote>
  1705. <pre>
  1706. //由于 2.6.0 之前的版本是采用深重载,
  1707. //所以如果您之前真实采用了深重载机制,那么建议将以下代码放入您的全局位置,从而可对老项目起到兼容作用
  1708. var tableReload = table.reload;
  1709. table.reload = function(){
  1710. var args = [];
  1711. layui.each(arguments, function(index, item){
  1712. args.push(item);
  1713. });
  1714. args[2] === undefined && (args[2] = true);
  1715. return tableReload.apply(null, args);
  1716. };
  1717. //<span class="layui-font-red">但如果你之前没有采用深重载机制,也可以不放。不放甚至可以解决你之前因为多次 reload 而带来的各种参数重叠问题 </span>
  1718. </pre>
  1719. </blockquote>
  1720. <p>重载示例:</p>
  1721. <pre class="layui-code" lay-title="示例1:自动化渲染的重载">
  1722. 【HTML】
  1723. &lt;table class="layui-table" lay-data="{id: 'idTest'}"&gt; …… &lt;/table&gt;
  1724. 【JS】
  1725. table.reload('idTest', {
  1726. url: '/api/table/search'
  1727. ,where: {} //设定异步数据接口的额外参数
  1728. //,height: 300
  1729. });
  1730. </pre>
  1731. <pre class="layui-code" lay-title="示例2:方法级渲染的重载">
  1732. //所获得的 tableIns 即为当前容器的实例
  1733. var tableIns = table.render({
  1734. elem: '#id'
  1735. ,cols: [] //设置表头
  1736. ,url: '/api/data' //设置异步接口
  1737. ,id: 'idTest'
  1738. });
  1739. //这里以搜索为例
  1740. tableIns.reload({
  1741. where: { //设定异步数据接口的额外参数,任意设
  1742. aaaaaa: 'xxx'
  1743. ,bbb: 'yyy'
  1744. //…
  1745. }
  1746. ,page: {
  1747. curr: 1 //重新从第 1 页开始
  1748. }
  1749. });
  1750. //上述方法等价于
  1751. table.reload('idTest', {
  1752. where: { //设定异步数据接口的额外参数,任意设
  1753. aaaaaa: 'xxx'
  1754. ,bbb: 'yyy'
  1755. //…
  1756. }
  1757. ,page: {
  1758. curr: 1 //重新从第 1 页开始
  1759. }
  1760. }); //只重载数据
  1761. </pre>
  1762. <p>注意:<em>这里的表格重载是指对表格重新进行渲染,包括数据请求和基础参数的读取</em></p>
  1763. </div>
  1764. <fieldset class="layui-elem-field layui-field-title site-title">
  1765. <legend><a name="export">导出任意数据</a></legend>
  1766. </fieldset>
  1767. <div class="site-text">
  1768. <p>
  1769. 尽管 table 的工具栏内置了数据导出按钮,但有时你可能需要通过方法去导出任意数据,那么可以借助以下方法:
  1770. <br>语法:<em>table.exportFile(id, data, type)</em>
  1771. </p>
  1772. <pre class="layui-code">
  1773. var ins1 = table.render({
  1774. elem: '#demo'
  1775. ,id: 'test'
  1776. //,…… //其它参数
  1777. })
  1778. //将上述表格示例导出为 csv 文件
  1779. table.exportFile(ins1.config.id, data); //data 为该实例中的任意数量的数据
  1780. </pre>
  1781. <p>事实上,该方法也可以不用依赖 table 的实例,可直接导出任意数据:</p>
  1782. <pre class="layui-code">
  1783. table.exportFile(['名字','性别','年龄'], [
  1784. ['张三','男','20'],
  1785. ['李四','女','18'],
  1786. ['王五','女','19']
  1787. ], 'csv'); //默认导出 csv,也可以为:xls
  1788. </pre>
  1789. </div>
  1790. <fieldset class="layui-elem-field layui-field-title site-title">
  1791. <legend><a name="on">事件</a></legend>
  1792. </fieldset>
  1793. <div class="site-text">
  1794. <p>
  1795. 语法:<em>table.on('event(filter)', callback);</em>
  1796. <br>注:event 为内置事件名,filter 为容器 lay-filter 设定的值
  1797. <br>目前所支持的所有事件见下文
  1798. </p>
  1799. <p>
  1800. 默认情况下,事件所触发的是全部的table模块容器,但如果你只想触发某一个容器,使用事件过滤器即可。
  1801. <br>假设原始容器为:<em>&lt;table class="layui-table" lay-filter="test">&lt;/table></em> 那么你的事件写法如下:
  1802. </p>
  1803. <pre class="layui-code">
  1804. //以复选框事件为例
  1805. table.on('checkbox(test)', function(obj){
  1806. console.log(obj)
  1807. });
  1808. </pre>
  1809. </div>
  1810. <fieldset class="layui-elem-field layui-field-title site-title">
  1811. <legend><a name="ontoolbar">触发头部工具栏事件</a></legend>
  1812. </fieldset>
  1813. <div class="site-text">
  1814. <p>点击头部工具栏区域设定了属性为 <em>lay-event=""</em> 的元素时触发(<span style="color:#FF5722;">该事件为 layui 2.4.0 开始新增</span>)。如:</p>
  1815. <pre class="layui-code">
  1816. 原始容器
  1817. &lt;table id=&quot;demo&quot; lay-filter=&quot;test&quot;&gt;&lt;/table&gt;
  1818. 工具栏模板:
  1819. &lt;script type=&quot;text/html&quot; id=&quot;toolbarDemo&quot;&gt;
  1820. &lt;div class=&quot;layui-btn-container&quot;&gt;
  1821. &lt;button class=&quot;layui-btn layui-btn-sm&quot; lay-event=&quot;add&quot;&gt;添加&lt;/button&gt;
  1822. &lt;button class=&quot;layui-btn layui-btn-sm&quot; lay-event=&quot;delete&quot;&gt;删除&lt;/button&gt;
  1823. &lt;button class=&quot;layui-btn layui-btn-sm&quot; lay-event=&quot;update&quot;&gt;编辑&lt;/button&gt;
  1824. &lt;/div&gt;
  1825. &lt;/script&gt;
  1826. &lt;script;&gt;
  1827. //JS 调用:
  1828. table.render({
  1829. elem: '#demo'
  1830. ,toolbar: '#toolbarDemo'
  1831. //,…… //其他参数
  1832. });
  1833. //触发事件
  1834. table.on('toolbar(test)', function(obj){
  1835. var checkStatus = table.checkStatus(obj.config.id);
  1836. switch(obj.event){
  1837. case 'add':
  1838. layer.msg('添加');
  1839. break;
  1840. case 'delete':
  1841. layer.msg('删除');
  1842. break;
  1843. case 'update':
  1844. layer.msg('编辑');
  1845. break;
  1846. };
  1847. });
  1848. &lt;/script&gt;
  1849. </pre>
  1850. </div>
  1851. <fieldset class="layui-elem-field layui-field-title site-title">
  1852. <legend><a name="oncheckbox">触发复选框选择</a></legend>
  1853. </fieldset>
  1854. <div class="site-text">
  1855. <p>点击复选框时触发,回调函数返回一个 object 参数:</p>
  1856. <pre class="layui-code">
  1857. table.on('checkbox(test)', function(obj){
  1858. console.log(obj); //当前行的一些常用操作集合
  1859. console.log(obj.checked); //当前是否选中状态
  1860. console.log(obj.data); //选中行的相关数据
  1861. console.log(obj.type); //如果触发的是全选,则为:all,如果触发的是单选,则为:one
  1862. });
  1863. </pre>
  1864. </div>
  1865. <fieldset class="layui-elem-field layui-field-title site-title">
  1866. <legend><a name="onradio">触发单选框选择</a></legend>
  1867. </fieldset>
  1868. <div class="site-text">
  1869. <p>点击表格单选框时触发,回调函数返回一个 object 参数,携带的成员如下:</p>
  1870. <pre class="layui-code">
  1871. table.on('radio(test)', function(obj){ //test 是 table 标签对应的 lay-filter 属性
  1872. console.log(obj); //当前行的一些常用操作集合
  1873. console.log(obj.checked); //当前是否选中状态
  1874. console.log(obj.data); //选中行的相关数据
  1875. });
  1876. </pre>
  1877. </div>
  1878. <fieldset class="layui-elem-field layui-field-title site-title">
  1879. <legend><a name="onedit">触发单元格编辑</a></legend>
  1880. </fieldset>
  1881. <div class="site-text">
  1882. <p>单元格被编辑,且值发生改变时触发,回调函数返回一个object参数,携带的成员如下:</p>
  1883. <pre class="layui-code">
  1884. table.on('edit(test)', function(obj){ //注:edit是固定事件名,test是table原始容器的属性 lay-filter="对应的值"
  1885. console.log(obj.value); //得到修改后的值
  1886. console.log(obj.field); //当前编辑的字段名
  1887. console.log(obj.data); //所在行的所有相关数据
  1888. });
  1889. </pre>
  1890. </div>
  1891. <fieldset class="layui-elem-field layui-field-title site-title">
  1892. <legend><a name="onrow">触发行单双击事件</a></legend>
  1893. </fieldset>
  1894. <div class="site-text">
  1895. <p>点击或双击行时触发。<span style="color:#FF5722;">该事件为 layui 2.4.0 开始新增</span></p>
  1896. <pre class="layui-code">
  1897. //触发行单击事件
  1898. table.on('row(test)', function(obj){
  1899. console.log(obj.tr) //得到当前行元素对象
  1900. console.log(obj.data) //得到当前行数据
  1901. //obj.del(); //删除当前行
  1902. //obj.update(fields) //修改当前行数据
  1903. });
  1904. //触发行双击事件
  1905. table.on('rowDouble(test)', function(obj){
  1906. //obj 同上
  1907. });
  1908. </pre>
  1909. </div>
  1910. <fieldset class="layui-elem-field layui-field-title site-title">
  1911. <legend>触发行中工具条点击事件</legend>
  1912. </fieldset>
  1913. <div class="site-text">
  1914. <p>具体用法见:<a href="#ontool">绑定工具条</a></p>
  1915. </div>
  1916. <fieldset class="layui-elem-field layui-field-title site-title">
  1917. <legend><a name="onsort">触发排序切换</a></legend>
  1918. </fieldset>
  1919. <div class="site-text">
  1920. <p>点击表头排序时触发,它通用在基础参数中设置 autoSort: false 时使用,以完成服务端的排序,而不是默认的前端排序。该事件的回调函数返回一个 object 参数,携带的成员如下:</p>
  1921. <pre class="layui-code">
  1922. //禁用前端自动排序,以便由服务端直接返回排序好的数据
  1923. table.render({
  1924. elem: '#id'
  1925. ,autoSort: false //禁用前端自动排序。<span style="color: #FF5722;">注意:该参数为 layui 2.4.4 新增</span>
  1926. //,… //其它参数省略
  1927. });
  1928. //触发排序事件
  1929. table.on('sort(test)', function(obj){ //注:sort 是工具条事件名,test 是 table 原始容器的属性 lay-filter="对应的值"
  1930. console.log(obj.field); //当前排序的字段名
  1931. console.log(obj.type); //当前排序类型:desc(降序)、asc(升序)、null(空对象,默认排序)
  1932. console.log(this); //当前排序的 th 对象
  1933. //尽管我们的 table 自带排序功能,但并没有请求服务端。
  1934. //有些时候,你可能需要根据当前排序的字段,重新向服务端发送请求,从而实现服务端排序,如:
  1935. table.reload('idTest', {
  1936. initSort: obj //记录初始排序,如果不设的话,将无法标记表头的排序状态。
  1937. ,where: { //请求参数(注意:这里面的参数可任意定义,并非下面固定的格式)
  1938. field: obj.field //排序字段
  1939. ,order: obj.type //排序方式
  1940. }
  1941. });
  1942. layer.msg('服务端排序。order by '+ obj.field + ' ' + obj.type);
  1943. });
  1944. </pre>
  1945. </div>
  1946. <fieldset class="layui-elem-field layui-field-title site-title">
  1947. <legend><a name="docend">结语</a></legend>
  1948. </fieldset>
  1949. <div class="site-text">
  1950. <p>table 模块自推出以来,因某些功能的缺失,一度饱受非议,也背负了各种莫须有的锅,然而我始终未曾放弃对它的优化。为了迎合 layui 开箱即用的理念,我的工作并不是那么轻松。无论是从代码,还是文档和示例的撰写上,我都进行了多次调整,为的只是它能被更多人认可。——贤心</p>
  1951. </div>
  1952. <div class="layui-elem-quote">
  1953. <p>layui - 在每一个细节中,用心与你沟通</p>
  1954. </div>
  1955. </div>
  1956. </div>
  1957. <div class="layui-footer footer footer-doc">
  1958. <p>
  1959. Copyright &copy; 2021 <a href="../../index.html" tppabs="http://www.layui.com/">「本站仅为 layui 文档保留的镜像站点,与官方无关」</a> MIT Licensed</p>
  1960. <p>
  1961. <a href="../../about/disclaimer.html" tppabs="http://www.layui.com/about/disclaimer.html" target="_blank">免责声明</a>
  1962. <a href="../../about/relatedlinks.html" tppabs="http://www.layui.com/about/relatedlinks.html" target="_blank">友链</a>
  1963. <a href="javascript:;" site-event="weixinmp">公众号</a>
  1964. </p>
  1965. </div>
  1966. <script>
  1967. window.global = {
  1968. pageType: 'doc'
  1969. ,preview: function(){
  1970. var preview = document.getElementById('LAY_preview');
  1971. return preview ? preview.innerHTML : '';
  1972. }()
  1973. };
  1974. </script>
  1975. <div class="site-tree-mobile layui-hide">
  1976. <i class="layui-icon layui-icon-spread-left"></i>
  1977. </div>
  1978. <div class="site-mobile-shade"></div>
  1979. <script src="/public/layui/dist/layui.js" tppabs="http://res.layui.com/layui/dist/layui.js?t=1632428048260" charset="utf-8"></script>
  1980. <script>
  1981. layui.config({
  1982. base: '/public/static/lay/modules/layui/'
  1983. ,version: '1632428048260'
  1984. }).use('global');
  1985. </script>
  1986. <script>
  1987. layui.use('table', function(){
  1988. var table = layui.table;
  1989. //第一个实例
  1990. table.render({
  1991. elem: '#demo'
  1992. ,height: 312
  1993. ,url: '../../demo/table/user/-page=1&limit=30.js' //数据接口
  1994. ,page: true //开启分页
  1995. ,cols: [[
  1996. {field:'id', title: 'ID', width:80, sort: true}
  1997. ,{field:'username', title: '用户名', width:80}
  1998. ,{field:'sex', title: '性别', width:80, sort: true}
  1999. ,{field:'city', title: '城市'} //如果未设定列宽,宽度将会自动分配
  2000. ,{field:'sign', title: '签名'}
  2001. ,{field:'experience', title: '积分', sort: true}
  2002. ,{field:'score', title: '评分', sort: true}
  2003. ,{field:'classify', title: '职业'}
  2004. ,{field:'wealth', title: '财富', sort: true}
  2005. ]]
  2006. });
  2007. });
  2008. </script>
  2009. </body>
  2010. </html>