1. 程式人生 > >bootstrap-table實現行內編輯

bootstrap-table實現行內編輯

很多時候使用行內編輯會該操作者帶來更清爽的體驗

實現bootstrapTable行內編輯:

首先匯入相關依賴:

<!--引用BootStrap的JavaScript外掛-->
<script src="#(basePath)/page/js/jquery.min.js"></script>
<script src="#(basePath)/page/js/bootstrap.min.js"></script>
<script src="#(basePath)/page/js/bootstrap-table.js"></script>
<script src="#(basePath)/page/js/bootstrap-table-zh-CN.js"></script>
<!-- 行內編輯  -->
<script src="#(basePath)/page/js/bootstrap-editable.js"></script>
<script src="#(basePath)/page/js/bootstrap-table-editable.js"></script>

HTML部分:

<table class="table table-hover table-bordered" id="tb_user">  </table>

js部分:

//初始化表格
function initTable() {
	//先銷燬表格  
	$('#tb_user').bootstrapTable('destroy');
	//初始化表格,動態從伺服器載入資料  
	$("#tb_user").bootstrapTable({
			url : '#(basePath)/admin/manageUser', //請求後臺的URL(*)
			method : 'post', //請求方式(*)
			contentType: "application/x-www-form-urlencoded",//一種編碼。好像在post請求的時候需要用到。這裡用的get請求,註釋掉這句話也能拿到資料
			striped : true, //是否顯示行間隔色
			dataField: "rows",//這是返回的json陣列的key.預設好像是"rows".這裡只有前後端約定好就行
			cache : true, //是否使用快取,預設為true,所以一般情況下需要設定一下這個屬性(*)
			pagination : true, //是否顯示分頁(*)
			sortable : true, //是否啟用排序
			sidePagination : "server", //分頁方式:client客戶端分頁,server服務端分頁(*)
			pageNumber : 1, //初始化載入第一頁,預設第一頁
			pageSize : 50, //每頁的記錄行數(*)
			pageList : [ 50, 100 ], //可供選擇的每頁的行數(*)
			search : false, //是否顯示錶格搜尋,此搜尋是客戶端搜尋,不會進服務端,所以,個人感覺意義不大
			strictSearch : false,
			paginationPreText:'上一頁',
            paginationNextText:'下一頁',
			//showColumns : true, //是否顯示所有的列
			//showRefresh : true, //是否顯示重新整理按鈕
			minimumCountColumns : 2, //最少允許的列數
			clickToSelect : true, //是否啟用點選選中行
			uniqueId : "user_id", //每一行的唯一標識,一般為主鍵列
			//showToggle : true, //是否顯示詳細檢視和列表檢視的切換按鈕
			cardView : false, //是否顯示詳細檢視
			detailView : false, //是否顯示父子表
			queryParams:queryParams,//請求伺服器時所傳的引數
			responseHandler:responseHandler,//請求資料成功後,渲染表格前的方法
			rowStyle: function (row, index) {
                //這裡有5個取值代表5中顏色['active', 'success', 'info', 'warning', 'danger'];
                var strclass;
                if (row.integral_num < 150) {
                    strclass = 'danger';
                }else if (row.integral_num > 400) {
                    strclass = 'info';
                }
                else {
                	strclass = '';
                }
                return { classes: strclass }
            },
	 	    onEditableSave: function (field, row, oldValue, $el) {
		    	layer.msg(row.integral_num);
                $.ajax({
                    type: "post",
                    url: "#(basePath)/admin/giftIntegral",
                    data: { 
                    	userId:row.user_id,
                    	integral:row.integral_num
                    },
                    success: function (data, status) {
                        if (status == "success") {
                            layer.msg("編輯成功");
                        }
                    },
                    error: function () {
                        layer.msg("Error");
                    },
                    complete: function () {
						layer.msg("完成")
                    }
                });
}, columns : [ { field : 'user_id', align : 'center', title : '編號', valign: 'middle' },{ field : 'tel', align : 'center', title : '電話', valign: 'middle' }, { field : 'user_name', align : 'center', title : '使用者名稱', valign: 'middle' },{ field : 'integral_num', align : 'center', title : '積分', valign: 'middle', editable: { type: 'text', title: '年齡', validate: function (v) { if (isNaN(v)) return '年齡必須是數字'; var age = parseInt(v); if (age <= 0) return '年齡必須是正整數'; } }
},{ field : 'register_time', align : 'center', title : '註冊時間', valign: 'middle' },{ title : '操作', field : 'user_id', align : 'center', formatter : function(value, row, index) { var e = '<button class="btn btn-default" onclick="edit(\''+ index + '\')">獎勵積分</button>'; return e ; }, valign: 'middle' } ], formatLoadingMessage: function () { return "請稍等,正在載入中..."; }, formatNoMatches: function () { //沒有匹配的結果 return '<img style="width:100px" src="#(basePath)/page/img/noContent.png">'; }, onLoadError: function (data) { $('#tb_user').bootstrapTable('removeAll'); }, }); } //請求服務資料時所傳引數 function queryParams(params){ return { pageSize : params.limit, //每一頁的資料行數,預設是上面設定的10(pageSize) pageIndex : params.offset/params.limit+1, //當前頁面,預設是上面設定的1(pageNumber) condition : $("#condition").val(),//條件輸入框的條件 //param : "Your Param" //這裡是其他的引數,根據自己的需求定義,可以是多個 } } //請求成功方法 function responseHandler(result){ //如果沒有錯誤則返回資料,渲染表格 return { total : result.totalRow, //總頁數,前面的key必須為"total" rows : result.list //行資料,前面的key要與之前設定的dataField的值一致. }; }