36 Star 287 Fork 66

胡邦茂/layui-op-table

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
Loading...
README
Apache-2.0

LOGO

介绍

Layui Table 数据列数过多解决方案。
初衷 体验过类似效果的UI很实用,着手在Layui上实现了一套。

演示站点

更新日志

支持功能

  • 展开内容(水平|垂直)显示
  • 展开显示表格
  • 展开内容从网络加载显示
  • 展开内容自定义标签显示

联系方式

  • QQ技术群: 730991854
  • 作者QQ:1414430109

兼容问题

兼容问题

快速上手

 layui.config({
    base: '../opTable'
  }).extend({
    opTable: '/opTable'
  }).use(['opTable'], function () {
  var opTable = layui.opTable.render({
      elem: '#test'
      , id: '#test'
      , url: 'static/test.json'
      , toolbar: '#toolDemo'
      , cols: [[
        {field: 'id', title: 'ID', sort: true}
        , {field: 'username', title: '用户名', edit: true}
        , {field: 'classify', title: '职业'}
        , {field: 'city', title: '城市', edit: true}
        , {title: '操作', toolbar: '#barDemo', width: 150, align: "center"}
      ]]

      //  展开的列配置
      , openCols: [
        {field: 'sex', title: '性别'}
        , {field: 'logins', title: '登录名', edit: true}
        , {field: 'sign', title: '签名'}
        , {field: 'wealth', title: '财富'}
        , {field: 'experience', title: '经验值'}
        , {field: 'experience', title: '积分'}
        , {field: 'score', title: '分数', edit: true}
      ]
    });
    
 });

效果预览

效果预览1

可配置属性

可配置属性

全局方法

全局方法

回调方法

回调方法

示例

示例站点

展开显示表格
 layui.opTable.render({
      elem: '#test1'
      , id: '#test1'
      , url: 'static/test.json'
      , cols: [[
        {field: 'id', title: 'ID', sort: true}
        , {field: 'username', title: '用户名', edit: true}
        , {field: 'city', title: '城市', edit: true}
      ]],

     /**
       * 展开显示表格 参数支持layui所有参数
       * @param itemData 当前行数据
       * @returns 支持 layui table 的所有配置参数
       *
       * 说明子表的 lay-filter='filter' 值与ID参数相同(去掉 # .)
       */
      openTable: function (itemData) {

        return {
          // 由于同时支持展开多个表格 组装唯一的id
          elem: '#child' + itemData.LAY_INDEX
          , id: 'child' + itemData.LAY_INDEX
          , url: 'static/test.json'
          , page: true
          , where: {id: itemData.id}
          , cols: [[
            {field: 'id', title: 'ID'}
            , {field: 'username', title: '用户名'}
            , {field: 'logins', title: '登录名'}
            , {field: 'city', title: '城市'}
            , {field: 'classify', title: '职业'}
            , {field: 'wealth', title: '财产值'}
            , {field: 'experience', title: '人气值'}
            , {field: 'score', title: '分数'}
            , {title: '操作', toolbar: '#barDemo', width: 150}
          ]]
        }
      }

    });
效果预览

展开显示表格

展开显示树形表格

演示

  var opTable = layui.opTable.render({
      elem: '#test-tree'
      , id: '#test-tree'
      , url: 'static/test.json'
      , cols: [[
        {field: 'id', title: 'ID', sort: true}
        , {field: 'username', title: '用户名', edit: true}
        , {field: 'city', title: '城市', edit: true}
      ]]
      /**
       * 展开显示树形表格
       * @param itemData 当前行数据
       * @returns
       *
       * 说明子表的 lay-filter='filter' 值与ID参数相同(去掉 # .)
       */
      , openTable: function (itemData) {
        return {
          elem: '#child_1_' + itemData.LAY_INDEX
          , id: 'child_1_' + itemData.LAY_INDEX
          , url: 'static/test2.json'
          , page: true
          , cols: [[
            {field: 'id', title: 'ID', edit: true}
            , {field: 'username', title: '用户名'}
            , {field: 'logins', title: '登录名'}
          ]]
          , openTable: function (itemData) {
            return {
              elem: '#child_2_' + itemData.LAY_INDEX
              , id: 'child_2_' + itemData.LAY_INDEX
              , url: 'static/test2.json'
              , page: true
              , cols: [[
                {field: 'id', title: 'ID', edit: true}
                , {field: 'username', title: '用户名'}
                , {field: 'logins', title: '登录名'}
              ]]
              , openTable: function (itemData) {
                return {
                  elem: '#child_3_' + itemData.LAY_INDEX
                  , id: 'child_3_' + itemData.LAY_INDEX
                  , url: 'static/test2.json'
                  , openVisible: false
                  , cols: [[
                    {field: 'id', title: 'ID', edit: true}
                    , {field: 'username', title: '用户名'}
                    , {field: 'logins', title: '登录名'}
                    , {field: 'city', title: '城市'}
                    , {field: 'classify', title: '职业'}
                    , {field: 'wealth', title: '财产值'}
                    , {field: 'experience', title: '人气值'}
                    , {field: 'score', title: '分数'}
                    , {title: '操作', toolbar: '#barDemo', width: 150}
                  ]]
                  , done: function () {
                    //  监听子表 修改
                    layui.table.on('edit(' + 'child' + itemData.LAY_INDEX + ')', function (obj) {
                      layer.msg(JSON.stringify(obj.data, null, "\t"));
                    });
                  }
                  , onEdit: function (data) {
                    console.log("表格4修改", data)
                  }
                }
              }
            }
          }
        }
      }
      , openType: 1
      , onEdit: function (data) {
        console.log("表格1修改", data)
        layer.msg(JSON.stringify(data));
      }
    });
效果预览

展开显示树形表格

展开从网络加载内容
layui.opTable.render({
      elem: '#test2'
      , id: '#test2'
      , url: 'static/test.json'
      , cols: [[
        {field: 'id', title: 'ID', sort: true}
        , {field: 'username', title: '用户名', edit: true}
        , {field: 'city', title: '城市', edit: true}
      ]],

      //  展开的列从网络加载
      openNetwork: {
        openCols: [
          {field: 'sign', title: '签名'}
          , {field: 'wealth', title: '财富'}
          , {field: 'experience', title: '积分'}
          , {field: 'classify', title: '职业'}
        ],
        /**
         *
         * @param data 当前行数据
         * @param success 成功
         * @param message 显示异常消息[没有数据 出错 等]
         */
        onNetwork: function (data, success, message) {
          // 从网络加载
          layui.$.ajax({
            type: "get",
            url: "static/test1.json",
            dataType: "json",
            data: {id: data.id},
            async: true,
            success: function (resp) {
              if (resp.code === 200) {
                setTimeout(function () {
                  if (data.id === 10000) {
                    message("加载出错");
                  } else {
                    success(resp.data);
                  }
                }, 200);
              } else {
                message("没有数据");
              }
            },
            error: function (err) {
              message("加载出错");
            }
          });
        }
      });
效果预览

网络加载内容

拓展

列描述
// 有时候我们需要对某一数据列新增说明,来提高使用者对该项数据的深入了解 。

...
 cols: [[
          {field: 'username', title: '用户名', opHelp: {text: '主要用于论坛中作为昵称展示。', tipOpt: {}}, edit: true}
      ]]
...


...
 openCols: [
        {field: 'sign', title: '签名', opHelp: {text: '设置属于你的签名吧 。', tipOpt: {}}}
      ]
...

效果预览

数据列描述

关于作者

过程中出问题了先自己捋一捋 

hubangmao 90后, 热爱 User interaction( UI ) 的Java程序猿 。

做完了一件非常开心非常Nice的事情。

此项目长期维护,以码云更新为准,祝你使用愉快 。  

空文件

简介

layui-table 列过多解决方案 展开 收起
JavaScript 等 2 种语言
Apache-2.0
取消

发行版 (3)

全部
4年前

layui-op-table 开源评估指数

productivity 生产力
niche_creation 创新力
robustness 稳健性
collaboration 协作
contributor 贡献者
software 软件

贡献者 (1)

全部

近期动态

28天前评论了任务 #IAZQQ6 如果表头使用了复杂表头,打开列后宽度异常
3个月前评论了任务 #I4I7RN 您好 请问展开的数据表格没有反应怎么办呀,断点时候 没有走到 openTable: function (itemData)这里 但是opcols可以
4个月前评论了任务 #I4ZK52 表格连续点击展开-收缩后出现空白行
5个月前创建了任务 #IAZQQ6 如果表头使用了复杂表头,打开列后宽度异常
12个月前关闭了 PR #1 opentable
加载更多
不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
JavaScript
1
https://gitee.com/Hbangmao/layui-op-table.git
git@gitee.com:Hbangmao/layui-op-table.git
Hbangmao
layui-op-table
layui-op-table
1.4

搜索帮助