直接在列表頁面進行編輯,編輯完成批量保存
html裏面就是個table加button
<table id="exampleTable" data-mobile-responsive="true"></table>
<button type="button" id="butSave" class="btn btn-primary col-sm-1 col-sm-offset-5" οnclick="save()">保存</button>
js裏面,給要編輯的字段列拼個input進去
{
field : 'gift',
title : '禮品',
align : 'center',
width : '28%',
formatter: function (value,row,index,field) {
if(row.gift == "" || row.gift == null){
value = "";
}else{
value = row.gift;
}
return '<input class="form-control" value="'+value+'" name="gift" type="text" οnblur="editRow(\''+index+'\',\'gift\',this.value,'+objTostr(row)+')">';
}
},
每編輯完一個就把行編輯數據更新到table中
然後保存
//對象轉json字符串
function objTostr(obj){
if( typeof(obj)!=='object' ){return obj;}
var temp=Object.assign({},obj);
return JSON.stringify( temp).replace(/"/g, '"');
}
//行編輯數據更新到table中
function editRow(index,field,value,row){
var rows = {
index : index, //更新列所在行的索引
field : field, //要更新列的field
value : value //要更新列的數據
};//更新表格數據
$("#exampleTable").bootstrapTable("updateCell",rows);
}
function save(){
var allTableData = $('#exampleTable').bootstrapTable('getData');//獲取表格的所有內容行
var params = JSON.stringify(allTableData);
$.ajax({
url : '/activity/invite/update',
type : 'POST',
data : params,
contentType:'application/json;charset=utf-8',
dataType:'JSON',
cache : false,
success : function(data) {
layer.msg(data.msg);
}
});
}
頁面完整代碼如下
html:
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<head th:replace="include :: header(~{::title},~{::link})">
</head>
<body class="gray-bg">
<div class="wrapper wrapper-content ">
<div class="col-sm-12">
<div class="ibox">
<div class="ibox-body">
<table id="exampleTable" data-mobile-responsive="true"></table>
<button type="button" id="butSave" class="btn btn-primary col-sm-1 col-sm-offset-5" οnclick="save()">保存</button>
</div>
</div>
</div>
</div>
<div th:include="include :: footer"></div>
<script type="text/javascript" src="/js/appjs/activity/inProgress/invite.js"></script>
</body>
</html>
js:
var prefix = "/activity/invite"
$(function() {
load();
});
function load() {
$('#exampleTable')
.bootstrapTable(
{
method : 'get', // 服務器數據的請求方式 get or post
url : prefix + "/list", // 服務器數據的加載地址
// showRefresh : true,
// showToggle : true,
// showColumns : true,
iconSize : 'outline',
toolbar : '#exampleToolbar',
striped : true, // 設置爲true會有隔行變色效果
dataType : "json", // 服務器返回的數據類型
pagination : true, // 設置爲true會在底部顯示分頁條
// queryParamsType : "limit",
// //設置爲limit則會發送符合RESTFull格式的參數
singleSelect : false, // 設置爲true將禁止多選
// contentType : "application/x-www-form-urlencoded",
// //發送到服務器的數據編碼類型
pageSize : 10, // 如果設置了分頁,每頁數據條數
pageNumber : 1, // 如果設置了分佈,首頁頁碼
//search : true, // 是否顯示搜索框
showColumns : false, // 是否顯示內容下拉框(選擇顯示的列)
sidePagination : "server", // 設置在哪裏進行分頁,可選值爲"client" 或者 "server"
queryParams : function(params) {
return {
//說明:傳入後臺的參數包括offset開始索引,limit步長,sort排序列,order:desc或者,以及所有列的鍵值對
limit: params.limit,
offset:params.offset,
sort : null==params.sort?null:params.sort.replace(/([A-Z])/g,"_$1").toLowerCase(), //駝峯轉下劃線
order : params.order,
activityId : $('#activityId').val()
// username:$('#searchName').val()
};
},
// //請求服務器數據時,你可以通過重寫參數的方式添加一些額外的參數,例如 toolbar 中的參數 如果
// queryParamsType = 'limit' ,返回參數必須包含
// limit, offset, search, sort, order 否則, 需要包含:
// pageSize, pageNumber, searchText, sortName,
// sortOrder.
// 返回false將會終止請求
columns : [
{
checkbox : true
},
{
field : 'customerName',
title : '客戶姓名'
},
{
field : 'idCard',
title : '身份證號'
},
{
field : 'starttime',
title : '開始時間'
},
{
field : 'participate',
title : '是否參加',
align : 'center',
width : '8%',
formatter: function (value,row,index,field) {
if(row.participate == "" || row.participate == null){
value = "";
}else{
value = row.participate;
}
return '<input class="form-control" value="'+value+'" name="participate" type="text" οnblur="editRow(\''+index+'\',\'participate\',this.value,'+objTostr(row)+')">';
}
},
{
field : 'gift',
title : '禮品',
align : 'center',
width : '28%',
formatter: function (value,row,index,field) {
if(row.gift == "" || row.gift == null){
value = "";
}else{
value = row.gift;
}
return '<input class="form-control" value="'+value+'" name="gift" type="text" οnblur="editRow(\''+index+'\',\'gift\',this.value,'+objTostr(row)+')">';
}
},
{
field : 'receiveTime',
title : '領取時間',
align : 'center',
width : '10%',
formatter: function (value,row,index,field) {
if(row.receiveTime == "" || row.receiveTime == null){
value = "";
}else{
value = row.receiveTime;
}
return '<input class="form-control" value="'+value+'" name="receiveTime" type="text" οnblur="editRow(\''+index+'\',\'receiveTime\',this.value,'+objTostr(row)+')">';
}
},
{
field : 'dealer',
title : '經辦人',
align : 'center',
width : '10%',
formatter: function (value,row,index,field) {
if(row.dealer == "" || row.dealer == null){
value = "";
}else{
value = row.dealer;
}
return '<input class="form-control" value="'+value+'" name="dealer" type="text" οnblur="editRow(\''+index+'\',\'dealer\',this.value,'+objTostr(row)+')">';
}
}
// {
// title : '操作',
// field : 'id',
// align : 'center',
// formatter : function(value, row, index) {
// var e = '<a class="btn btn-primary btn-sm '+s_edit_h+'" href="#" mce_href="#" title="編輯" οnclick="edit(\''
// + row.inviteId
// + '\')"><i class="fa fa-edit"></i></a> ';
// var d = '<a class="btn btn-warning btn-sm '+s_remove_h+'" href="#" title="刪除" mce_href="#" οnclick="remove(\''
// + row.inviteId
// + '\')"><i class="fa fa-remove"></i></a> ';
// var f = '<a class="btn btn-success btn-sm" href="#" title="備用" mce_href="#" οnclick="resetPwd(\''
// + row.inviteId
// + '\')"><i class="fa fa-key"></i></a> ';
// return e + d ;
// }
// }
]
});
}
function reLoad() {
$('#exampleTable').bootstrapTable('refresh');
$('#exampleTable').bootstrapTable('selectPage',1);
}
function add() {
layer.open({
type : 2,
title : '增加',
maxmin : true,
shadeClose : false, // 點擊遮罩關閉層
area : [ '100%', '100%' ],
content : prefix + '/add' // iframe的url
});
}
function edit(id) {
layer.open({
type : 2,
title : '編輯',
maxmin : true,
shadeClose : false, // 點擊遮罩關閉層
area : [ '100%', '100%' ],
content : prefix + '/edit/' + id // iframe的url
});
}
function remove(id) {
layer.confirm('確定要刪除選中的記錄?', {
btn : [ '確定', '取消' ]
}, function() {
$.ajax({
url : prefix+"/remove",
type : "post",
data : {
'inviteId' : id
},
success : function(r) {
if (r.code==0) {
layer.msg(r.msg);
reLoad();
}else{
layer.msg(r.msg);
}
}
});
})
}
function resetPwd(id) {
}
function batchRemove() {
var rows = $('#exampleTable').bootstrapTable('getSelections'); // 返回所有選擇的行,當沒有選擇的記錄時,返回一個空數組
if (rows.length == 0) {
layer.msg("請選擇要刪除的數據");
return;
}
layer.confirm("確認要刪除選中的'" + rows.length + "'條數據嗎?", {
btn : [ '確定', '取消' ]
// 按鈕
}, function() {
var ids = new Array();
// 遍歷所有選擇的行數據,取每條數據對應的ID
$.each(rows, function(i, row) {
ids[i] = row['inviteId'];
});
$.ajax({
type : 'POST',
data : {
"ids" : ids
},
url : prefix + '/batchRemove',
success : function(r) {
if (r.code == 0) {
layer.msg(r.msg);
reLoad();
} else {
layer.msg(r.msg);
}
}
});
}, function() {
});
}
//對象轉json字符串
function objTostr(obj){
if( typeof(obj)!=='object' ){return obj;}
var temp=Object.assign({},obj);
return JSON.stringify( temp).replace(/"/g, '"');
}
//行編輯數據更新到table中
function editRow(index,field,value,row){
var rows = {
index : index, //更新列所在行的索引
field : field, //要更新列的field
value : value //要更新列的數據
};//更新表格數據
$("#exampleTable").bootstrapTable("updateCell",rows);
}
function save(){
var allTableData = $('#exampleTable').bootstrapTable('getData');//獲取表格的所有內容行
var params = JSON.stringify(allTableData);
$.ajax({
url : '/activity/invite/update',
type : 'POST',
data : params,
contentType:'application/json;charset=utf-8',
dataType:'JSON',
cache : false,
success : function(data) {
layer.msg(data.msg);
}
});
}