這篇文章主要為大家展示了“bootstrap如何實現table插件動態加載表頭”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“bootstrap如何實現table插件動態加載表頭”這篇文章吧。

bootstrap的table屬性已經很熟悉了,最近遇到一個問題,猶豫每個列表加載的數據需求不同,所以需要動態的更換表頭。 網上有很多加載表格數據的例子,但是卻沒有找到如何動態加載表格,再加在數據。 雖然可以一個表格加載一種數據,但是本著學習的態度嘗試了下這種方式,結果發現是可以執行的。分享下思路和實現過程,以備日后使用。
思路:
1、寫接口,查詢出要展示的列。注意接口中必須要有字段中文名稱(columns屬性的title值),字段的英文名稱(columns的field字段),特別注意filed字段應該與最后查詢出的列表中返回的json數據中的key保持一致,不然取不到值。
2、ajax請求剛才的接口,查詢出columns,并給table的columns賦值。
3、加載表格展示。
大致代碼如下:
表格:
var peopleOptions;
// 人口列表加載
function tableItem() {
peopleOptions = {
method : "POST", // 使用get請求到服務器獲取數據
url : path + "/api/information/people/getList", // 獲取數據的地址
contentType : "application/x-www-form-urlencoded",// 重要否則POST會報錯
striped : false, // 表格顯示條紋
pagination : true, // 啟動分頁
pageSize : 10, // 每頁顯示的記錄數
pageNumber : 1, // 當前第幾頁
pageList : [ 10, 20, 50 ], // 記錄數可選列表
uniqueId : "id",
showColumns : false, // 顯示下拉框勾選要顯示的列
showToggle : false, // 顯示 切換試圖(table/card)按鈕
clickToSelect : false, // 點擊可選
singleSelect : false, // 禁止多選
maintainSelected : true, // 在點擊分頁按鈕或搜索按鈕時,將記住checkbox的選擇項
sortable : true, // 禁止所有列的排序
sidePagination : "server", // 表示服務端請求 后臺分頁
toolbar : "#toolbar",// 指明自定義的toolbar
queryParamsType : "undefined",
queryParams : function queryParams(params) {
var param = {
pageNumber : params.pageNumber,
pageSize : params.pageSize,
orgId : ztreeId,
nodeId : ztreeId,
citizenName : $("#fullname").val().trim(),
sex : $("#sex").val(),
age : $("#age").val().trim(),
identityCode : $("#idCard").val().trim(),
cellPhone : $("#isMobile").val().trim(),
adress : $("#adress").val().trim(),
};
return param;
},
onLoadSuccess : function() { // 加載成功時執行
responseHandler : function(res) { // 格式化數據
console.log(res);
if (res.data.total != undefined)
tmp = {
total : res.data.total,
rows : res.data.rows
};
if (res.data.total == undefined)
tmp = {
total : res.data.length,
rows : res.data
};
return tmp;
},
columns : [ {
checkbox : true,
title : '全選',
valign : 'middle'
}, {
title : '序號',
field : 'number',
width : '40px',
align : 'center',
valign : 'middle',
formatter : indexFormatter
}, {
title : '姓名',
field : 'citizenName',
align : 'center',
valign : 'middle',
}, {
title : '年齡',
field : 'age',
align : 'center',
width : 28,
valign : 'middle',
formatter : ageFormatter
}, {
title : '性別',
field : 'sex',
width : 28,
align : 'center',
valign : 'middle',
},{
title : '身份證號',
field : 'identityCode',
align : 'center',
valign : 'middle',
}, {
title : '民族',
field : 'nation',
align : 'center',
valign : 'middle',
} ]
}
}
$table = $("#table").bootstrapTable(peopleOptions);
};動態獲取列:
function getColumns() {
// 加載動態表格
$.ajax({
url : path + "api/information/people/getLableColumn?ztreeId=" + ztreeId,
type : 'get',
dataType : "json",
async : false,
success : function(returnValue) {
// 未查詢到相應的列,展示默認列
if (returnValue.retCode == "0") {
//沒查到列的時候把之前的列再給它
myColumns = $table.bootstrapTable('getOptions').columns[0];
} else {
// 異步獲取要動態生成的列
var arr = returnValue.data;
$.each(arr, function(i, item) {
myColumns.push({
"field" : item.labelColumnCode,
"title" : item.labelColumnName,
"hide" : true,
"align" : 'center',
"valign" : 'middle'
});
});
}
console.log(myColumns);
return myColumns;
}
});
}刷新列表:
//點擊左側樹后重新加載表格
$table.bootstrapTable(
"refreshOptions",
{
url : path + "/api/peopledataInfo/getPeopleInfoList", // 獲取數據的地址
columns : myColumns,
}
);
}需要注意的是bootstrap的table提供了兩個刷新的方法,一個refresh,一個refreshOptions,前者只是刷新當前表格,后者會將表格中的組件全部更新一遍,因為我們替換了url和columns,所以需要調用后者。
展示效果:


動態加載表頭其實就是類似Echart中動態加載數據的感覺一樣,只是改變整個Option中的相關屬性即可。
優點:代碼量會大大減少,當我們要加載不同數據且樣式一樣的表格的時候可以采用這樣的方式。
缺點:樣式很難維護。前端人員不好定位bug,所以很難修改相應的樣式bug。
依據項目實際情況,擇優使用吧。
以上是“bootstrap如何實現table插件動態加載表頭”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注創新互聯成都網站設計公司行業資訊頻道!
另外有需要云服務器可以了解下創新互聯scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
網頁名稱:bootstrap如何實現table插件動態加載表頭-創新互聯
瀏覽地址:http://www.yijiale78.com/article48/ddcjhp.html
成都網站建設公司_創新互聯,為您提供搜索引擎優化、網站設計、App設計、網站改版、品牌網站制作、ChatGPT
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯