现在做的化销项目前端使用bootstrap框架,copy之前的页面也没啥大问题,然后业务提了一些优化的东西,结果一地鸡毛,做个记录,以便以后查询。
参考了别人翻译的bootstrap官方文档:https://blog.csdn.net/S_clifftop/article/details/77937356
$('#id').bootstrapTable('getSelections')
,通过getSelections方法拿到的行数据,无法得到input输入框修改的值。$("#input"+index).val()
;得到输入框修改后的值,index是行索引。这导致了新的问题,保存数据时也遇到相同的问题:bootstrapTable的getData方法,对rows循环遍历时key和index是一一对应的,但getSelections则不是,它得到的行数据的数组是不带行索引的。var TableInit = function() {
var oTableInit = new Object();
oTableInit.InitConfigureList = function() {
$('#tb_configure').bootstrapTable('destroy');
$('#tb_configure').bootstrapTable({
contentType : 'application/json',
url :ctx + '/xxxxx/xxxx', // 请求后台的URL(*)
method:'post',
toolbar : '#toolbar', // 工具按钮用哪个容器
toolbarAlign:'right',//工具按钮的位置
queryParams : oTableInit.queryParams,// 传递参数(*)
singleSelect : false,
clickToSelect:true,
uniqueId : "id", // 每一行的唯一标识,一般为主键列
pagination : true, // 是否显示分页(*)
sortable : false, // 是否启用排序
sidePagination : "server", // 分页方式:client客户端分页,server服务端分页(*)
pageNumber : 1, // 初始化加载第一页,默认第一页
pageSize : 10, // 每页的记录行数(*)
pageList : [5, 10, 20, 50, 100], // 可供选择的每页的行数(*)
columns : [{
field : '',
align : 'left',
formatter : function(value, row, index) {
return index + 1;
}
},{
field : 'checked',
checkbox : true,
class : 'st_checkbox'
},{
field : 'itemName',
title : '物料名称',
align : 'left',
formatter:function(value, row, index){
if (value == null || value == '') {
value = '物料名称选择';
}
return '+index+', '+row.id+', '+'\''+row.pickupDate+'\')">'+value+'';
}
},{
field : 'handlingCapacity',
title : '装卸能力',
align : 'left',
formatter:function(value, row, index){
return '+index+'" value="'+value+'" οninput="qtyLimit('+index+')"/>+index+'">';
}
},{
field : 'handlingCar',
title : '可装卸车辆',
align : 'left',
formatter:function(value, row, index){
return '+index+'" value="'+value+'" οninput="carLimit('+index+')"/>+index+'">';
}
},{
field : 'stockWarnVal',
title : '库存预警值',
align : 'left',
formatter:function(value, row, index){
return '+index+'" value="'+value+'" οninput="warnLimit('+index+')"/>+index+'">';
}
}],
onCheck:function(row,$element){
//选中行时,把行索引赋值给row
var index = $element.attr("data-index");
row.thisIndex= index;
},
onCheckAll:function(rows){
//选中行时,把行索引赋值给row
$.each(rows, function(key, value){
row.thisIndex= key;
})
}
});
};
}
新增行时的代码:
$("#rowAdd").click(function() {
//提货时间初始化
var timeVal = '';
var startTime = '';
var endTime = '';
var handlingCapacity = '-1';
var handlingCar = '-1';
var confRow = $('#tb_configure').bootstrapTable('getSelections');
if (confRow.length<=0) {
timeVal = $("#time0").val();
handlingCapacity = $("#handlingCapacity0").val();
handlingCar = $("#handlingCar0").val();
}else{
**var rowNum = confRow[0].thisIndex;**
if (rowNum == undefined){
rowNum = 0;
}
timeVal = $("#time"+rowNum).val();
handlingCapacity = $("#handlingCapacity"+rowNum).val();
handlingCar = $("#handlingCar"+rowNum).val();
}
if (timeVal != undefined && timeVal != null) {
var timeArr = timeVal.split('-');
startTime = timeArr[0].trim();
endTime = timeArr[1].trim();
}else {
timeVal = '';
}
id_++;
$('#tb_configure').attr('disabled', 'disabled');
$("#tb_configure").bootstrapTable('insertRow', {
index:0,//指定新增行在第一行
row: {
id:id_,
time:timeVal,
startTime:startTime,
endTime:endTime,
handlingCapacity:handlingCapacity,
handlingCar:handlingCar,
stockWarnVal:300
}
});
})
$("#rowDelete").click(function() {
var confRow = $('#tb_configure').bootstrapTable('getSelections');
var confArrItem=[];
var deleteRow = [];
if(confRow.length > 0) {
$.each(confRow, function(key, value){
if (value.id <= id_){//id_是新增行数据的ID值,每加一条id_+1
deleteRow.push(value.id);
}else {
var p={
id : value.id,
pickupDate:pickupDate
};
confArrItem.push(p);
}
});
}else {
printMsg("请先选择要删除的数据!");
return;
}
if (confArrItem.length <= 0) {
if(deleteRow.length <= 0) {
printMsg(pickupDate+"还没有配置信息,请先保存数据!");
return;
}else{
$('#tb_configure').bootstrapTable('remove', {
field: 'id',
values: deleteRow
});
return;
}
}
})