在使用Bootstrap時候,有時候表格要顯示的內容過多,如果都顯示的話,表格就會顯得太長
在ElementUI中可以設置展開行,這樣部分數據可以隱藏,需要的時候顯示出來。
ElementUI table 展開顯示效果:
Bootstrap 實現過程
實現效果:
1. 表格數據加載
2. 在表格加載之后為表格添加展開事件
代碼如下:
var TableInit = function () { var oTableInit = new Object(); //初始化Table oTableInit.Init = function () { $('#table').BootstrapTable({ url: '************', //請求后台的URL(*) method: 'post', //請求方式(*) toolbar: '#toolbar', //工具按鈕用哪個容器 striped: false, //是否顯示行間隔色 cache: false, //是否使用緩存,默認為true,所以一般情況下需要設置一下這個屬性(*) pagination: true, //是否顯示分頁(*) sortable: false, //是否啟用排序 sortOrder: "asc", //排序方式 queryParams: oTableInit.queryParams,//傳遞參數(*) sidePagination: "server", //分頁方式:client客戶端分頁,server服務端分頁(*) pageNumber: 1, //初始化加載第一頁,默認第一頁 pageSize: 10, //每頁的記錄行數(*) pageList: [10, 25, 50, 100], //可供選擇的每頁的行數(*) search: false, //是否顯示表格搜索,此搜索是客戶端搜索,不會進服務端,所以,個人感覺意義不大 strictSearch: true, showColumns: false, //是否顯示所有的列 showRefresh: false, //是否顯示刷新按鈕 minimumCountColumns: 2, //最少允許的列數 clickToSelect: true, //是否啟用點擊選中行 uniqueId: "ID", //每一行的唯一標識,一般為主鍵列 showToggle: false, //是否顯示詳細視圖和列表視圖的切換按鈕 cardView: false, //是否顯示詳細視圖 detailView: false, //是否顯示父子表 columns: [{ checkbox: true }, { field: 'Expand', name: 'Expand', align: table_align, title: ' ', class: 'expand-column', formatter: function (value, row, index) { return '<i class="fa fa-chevron-right expand-row" aria-hidden="true" style="color:gray"></i> '; } }, { field: 'Column1', name: 'Column1', align: table_align, title: '列1', class: 'expand-first-column', events: detailOperateEvents }, { field: 'Column2', name: 'Column2', align: table_align, title: '列2' }, { field: 'Column3', name: 'Column3', align: table_align, title: '列3' }, { field: 'Column4', name: 'Column4', align: table_align, title: '列4' }, { field: 'Column5', name: 'Column5', align: table_align, title: '列5' }, { field: 'Column6', name: 'Column6', align: table_align, visible: false, title: '列6' }, { field: 'Column7', name: 'Column7', align: table_align, title: '列7' }, { field: 'operate', title: '操作', align: 'center', events: operateEvents, width: '10%', formatter: operateFormatter }], onLoadSuccess: function () { // 初始化展開按鈕 expandRow(); } }); }; //得到查詢的參數 oTableInit.queryParams = function (params) { var temp = { pageSize: params.limit, //頁面大小 pageIndex: params.offset / params.limit + 1 //頁碼 }; return temp; }; return oTableInit; };
expandRow 方法
// 展開行 function expandRow() { $('.expand-row').click(function (e) { var row = e.target.parentElement.parentElement; var id = row.dataset.uniqueid; // 如果是展開操作 if (row.dataset.expand == undefined || row.dataset.expand == 'false') { $(this).removeClass('fa-chevron-right'); $(this).addClass('fa-chevron-down'); row.dataset.expand = true; // 獲取行信息 var rowInfo = $("#table").bootstrapTable('getRowByUniqueId', id); // 創建行 var tr = '<tr>'; tr += '<td colspan="11">'; tr += '<div>'; tr += '<div class="table-item"><label>隱藏列1:</label><div class="table-item__content">' + rowInfo.CloumnA+ '</div></div>'; tr += '<div class="table-item"><label>隱藏列2:</label><div class="table-item__content">' + rowInfo.CloumnB+ '</div></div>'; tr += '</div>'; tr += '</td>'; tr += '</tr>'; $(row).after(tr); } else { // 如果是收縮操作 $(this).addClass('fa-chevron-right'); $(this).removeClass('fa-chevron-down'); row.dataset.expand = false; var rowIndex = row.rowIndex; $('#tb_main')[0].deleteRow(rowIndex + 1); } }); }
style 樣式:
.expand-column{ border-right:none !important; } .expand-first-column{ border-left:none !important; } .table-item{ display: flex; margin-left:5%; margin-bottom:5px; } .table-item>label{ width:100px; color: dimgrey; } .table-item__content { font-size: 14px; word-break: break-all; }