ソースを参照

表格插件页面新增treegrid使用示例

笔下光年 6 年 前
コミット
a5603dc6c1

+ 3 - 0
README.md

@@ -37,6 +37,9 @@
 - Bootstrap-Multitabs
 
 ### 更新记录
+2019.06.27
+表格插件页面新增treegrid使用示例
+
 2019.06.26
 调整tabs高度,替换size()方法
 新增右键菜单刷新和关闭功能

+ 1 - 1
js/bootstrap-multitabs/multitabs.min.css

@@ -44,7 +44,7 @@ li:hover .mt-close-tab {
 }
 @media (max-width: 767px){
     .mt-tab-content{
-        padding-top: 0 !important;
+        /*padding-top: 0 !important;*/
     }
 }
 .mt-tab-content{

+ 1 - 0
js/jquery-treegrid/jquery.treegrid.min.css

@@ -0,0 +1 @@
+.treegrid-indent{width:16px;height:16px;display:inline-block;position:relative}.treegrid-expander{width:16px;height:16px;display:inline-block;position:relative;cursor:pointer}

ファイルの差分が大きいため隠しています
+ 1 - 0
js/jquery-treegrid/jquery.treegrid.min.js


+ 211 - 0
lyear_pages_data_table.html

@@ -44,6 +44,22 @@
       </div>
     </div>
     
+    <div class="col-lg-12">
+      <div class="card">
+        <div class="card-header">
+          <h4>TreeGrid使用</h4>
+        </div>
+        <div class="card-body">
+          
+          <div id="toolbar2" class="toolbar-btn-action">
+            <button type="button" class="btn btn-primary m-r-5" onclick="test()">返回选中行</button>
+          </div>
+          
+          <table class="tree-table"></table>
+        </div>
+      </div>
+    </div>
+    
   </div>
   
 </div>
@@ -213,5 +229,200 @@ function delUser()
     alert('信息删除成功');
 }
 </script>
+
+<!--以下是tree-grid的使用示例-->
+<link href="js/jquery-treegrid/jquery.treegrid.min.css" rel="stylesheet">
+<script type="text/javascript" src="js/jquery-treegrid/jquery.treegrid.min.js"></script>
+<script type="text/javascript" src="js/bootstrap-table/extensions/treegrid/bootstrap-table-treegrid.min.js"></script>
+<script type="text/javascript">
+// tree-grid使用
+var data = JSON.parse(
+        '[{"id":1, "pid":0, "status":1, "name":"用户管理", "permissionValue":"open:user:manage"},' +
+        '{"id":2, "pid":0, "status":1, "name":"系统管理", "permissionValue":"open:system:manage"},' +
+        '{"id":3, "pid":1, "status":1, "name":"新增用户", "permissionValue":"open:user:add"},' +
+        '{"id":4, "pid":1, "status":1, "name":"修改用户", "permissionValue":"open:user:edit"},' +
+        '{"id":5, "pid":1, "status":0, "name":"删除用户", "permissionValue":"open:user:del"},' +
+        '{"id":6, "pid":2, "status":1, "name":"系统配置管理", "permissionValue":"open:systemconfig:manage"},' +
+        '{"id":7, "pid":6, "status":1, "name":"新增配置", "permissionValue":"open:systemconfig:add"},' +
+        '{"id":8, "pid":6, "status":1, "name":"修改配置", "permissionValue":"open:systemconfig:edit"},' +
+        '{"id":9, "pid":6, "status":0, "name":"删除配置", "permissionValue":"open:systemconfig:del"},' +
+        '{"id":10, "pid":2,"status":1, "name":"系统日志管理", "permissionValue":"open:log:manage"},' +
+        '{"id":11, "pid":10,"status":1, "name":"新增日志", "permissionValue":"open:log:add"},' +
+        '{"id":12, "pid":10,"status":1, "name":"修改日志", "permissionValue":"open:log:edit"},' +
+        '{"id":13, "pid":10,"status":0, "name":"删除日志", "permissionValue":"open:log:del"}]');
+
+var $treeTable = $('.tree-table');
+$treeTable.bootstrapTable({
+    data: data,
+    idField: 'id',
+    uniqueId: 'id',
+    dataType: 'jsonp',
+    toolbar: '#toolbar2',
+    columns: [
+        {
+            field: 'check',
+            checkbox: true
+        },
+        {
+            field: 'name',
+            title: '名称'
+        },
+        {
+            field: 'status',
+            title: '状态',
+            sortable: true,
+            /*
+             * 可以选择采用开关来处理状态显示
+             * 或者采用上个示例的处理方式
+             */
+            formatter: function (value, row, index) {
+                if (value == 0) {
+                    is_checked = '';
+                } else if (value == 1){
+                    is_checked = 'checked="checked"';
+                }
+                result = '<label class="lyear-switch switch-primary lyear-status"><input type="checkbox" '+ is_checked +'><span  onClick="updateStatus('+ row.id +', '+ value +')"></span></label>';
+                return result;
+            },
+        },
+        {
+            field: 'permissionValue',
+            title: '权限值'
+        },
+        {
+            field: 'operate',
+            title: '操作',
+            align: 'center',
+            events : {
+                'click .role-add': function (e, value, row, index) {
+                    add(row.id);
+                },
+                'click .role-delete': function (e, value, row, index) {
+                    del(row.id);
+                },
+                'click .role-edit': function (e, value, row, index) {
+                    update(row.id);
+                }
+            },
+            formatter: operateFormatter
+        }
+    ],
+    
+    treeShowField: 'name',
+    parentIdField: 'pid',
+    
+    onResetView: function(data) {
+        $treeTable.treegrid({
+            initialState: 'collapsed', // 所有节点都折叠
+            treeColumn: 1,
+            //expanderExpandedClass: 'mdi mdi-folder-open',  // 可自定义图标样式
+            //expanderCollapsedClass: 'mdi mdi-folder',
+            onChange: function() {
+                $treeTable.bootstrapTable('resetWidth');
+            }
+        });
+        
+        // 只展开树形的第一集节点
+        $treeTable.treegrid('getRootNodes').treegrid('expand');
+    },
+    onCheck: function(row) {
+        var datas = $treeTable.bootstrapTable('getData');
+        
+        selectChilds(datas, row, 'id', 'pid', true); // 选择子类
+        
+        selectParentChecked(datas, row, 'id', 'pid'); // 选择父类
+        
+        $treeTable.bootstrapTable('load', datas);
+    },
+    
+    onUncheck: function(row) {
+        var datas = $treeTable.bootstrapTable('getData');
+        selectChilds(datas, row, 'id', 'pid', false);
+        $treeTable.bootstrapTable('load', datas);
+    },
+});
+  
+// 操作按钮
+function operateFormatter(value, row, index) {
+    return [
+        '<a type="button" class="role-add btn btn-xs btn-default m-r-5" title="编辑" data-toggle="tooltip"><i class="mdi mdi-plus"></i></a>',
+        '<a type="button" class="role-edit btn btn-xs btn-default m-r-5" title="修改" data-toggle="tooltip"><i class="mdi mdi-pencil"></i></a>',
+        '<a type="button" class="role-delete btn btn-xs btn-default" title="删除" data-toggle="tooltip"><i class="mdi mdi-delete"></i></a>'
+    ].join('');
+}
+
+/**
+ * 选中父项时,同时选中子项
+ * @param datas 所有的数据
+ * @param row 当前数据
+ * @param id id 字段名
+ * @param pid 父id字段名
+ */
+function selectChilds(datas,row,id,pid,checked) {
+    for(var i in datas){
+        if(datas[i][pid] == row[id]){
+            datas[i].check=checked;
+            selectChilds(datas,datas[i],id,pid,checked);
+        };
+    }
+}
+
+function selectParentChecked(datas,row,id,pid){
+    for(var i in datas){
+        if(datas[i][id] == row[pid]){
+            datas[i].check=true;
+            selectParentChecked(datas,datas[i],id,pid);
+        };
+    }
+}
+
+function add(id) {
+    alert("add 方法 , id = " + id);
+}
+function del(id) {
+    alert("del 方法 , id = " + id);
+}
+function update(id) {
+    alert("update 方法 , id = " + id);
+}
+function updateStatus(id, state) {
+    var newstate = (state == 1) ? 0 : 1; // 发送参数值跟当前参数值相反
+    $.ajax({
+        type: "get",
+        url: "http://www.bixiaguangnian.com/index/test/testGridJson",
+        data: {id: id, state: newstate},
+        dataType: 'jsonp',
+        success: function (data, status) {
+            if (data.code == '200') {
+                $treeTable.bootstrapTable('updateCellById', {id: id, field: 'status', value: newstate});
+            } else {
+                alert(data.msg);
+                $treeTable.bootstrapTable('updateCellById', {id: id, field: 'status', value: state}); // 因开关点击后样式是变的,失败也重置下
+            }
+        },
+        error: function () {
+            alert('修改失败,请稍后再试');
+        }
+    });
+}
+
+function test() {
+    var selRows = $treeTable.bootstrapTable("getSelections");
+    if(selRows.length == 0){
+        alert("请至少选择一行");
+        return;
+    }
+	console.log(selRows);
+
+    var postData = "";
+    $.each(selRows,function(i) {
+        postData +=  this.id;
+        if (i < selRows.length - 1) {
+            postData += ", ";
+        }
+    });
+    alert("你选中行的 id 为:"+postData);
+}
+</script>
 </body>
 </html>