数值存在了editRow里面咋办
时间: 2024-04-21 17:24:15 浏览: 17
如果您想要在调用 `sub.addRow(row)` 后仍然保留编辑行中的数值,您可以将编辑行的数值存储在一个临时变量中,并在插入新行后重新设置编辑行的数值。
以下是修改的示例代码:
```javascript
var tempEditRowData = {}; // 用于存储编辑行的数值
var sub = {
// ...
editRow: function() {
var dataColumns = [];
for (var columnIndex = 0; columnIndex < table.options.columns.length; columnIndex++) {
if (table.options.columns[columnIndex].visible != false) {
dataColumns.push(table.options.columns[columnIndex]);
}
}
var params = [];
var data = $("#" + table.options.id).bootstrapTable('getData');
var count = data.length;
for (var dataIndex = 0; dataIndex < count; dataIndex++) {
var columns = $('#' + table.options.id + ' tr[data-index="' + dataIndex + '"] td:visible');
var obj = {};
for (var i = 0; i < columns.length; i++) {
var inputValue = $(columns[i]).find('input');
var selectValue = $(columns[i]).find('select');
var textareaValue = $(columns[i]).find('textarea');
var key = dataColumns[i].field;
if ($.common.isNotEmpty(inputValue.val())) {
obj[key] = inputValue.val();
} else if ($.common.isNotEmpty(selectValue.val())) {
obj[key] = selectValue.val();
} else if ($.common.isNotEmpty(textareaValue.val())) {
obj[key] = textareaValue.val();
} else {
if (key == "index" && $.common.isNotEmpty(data[dataIndex].index)) {
obj[key] = data[dataIndex].index;
} else {
obj[key] = "";
}
}
}
// 获取当前行的下拉框选中值
var currentSelectValues = $('#' + table.options.id + ' tr[data-index="' + dataIndex + '"] select').map(function() {
return $(this).val();
}).get();
var item = data[dataIndex];
var extendObj = $.extend({}, item, obj);
params.push({ index: dataIndex, row: extendObj });
// 将下拉框选中值赋值给更新后的行数据
$('#' + table.options.id + ' tr[data-index="' + dataIndex + '"] select').each(function(i) {
$(this).val(currentSelectValues[i]);
});
}
$("#" + table.options.id).bootstrapTable("updateRow", params);
tempEditRowData = params[0].row; // 存储编辑行的数值
},
addRow: function(row, tableId) {
var currentId = $.common.isEmpty(tableId) ? table.options.id : tableId;
table.set(currentId);
var count = $("#" + currentId).bootstrapTable('getData').length;
sub.editRow(); // 保存已选择的下拉框值
$("#" + currentId).bootstrapTable('insertRow', { index: count + 1, row: row });
// 重新设置编辑行的数值
$('#' + currentId + ' tr[data-index="' + count + '"] td').each(function(i) {
var field = table.options.columns[i].field;
var value = tempEditRowData[field];
$(this).find('input').val(value);
$(this).find('select').val(value);
$(this).find('textarea').val(value);
});
tempEditRowData = {}; // 清空临时变量
},
// ...
};
```
在上述代码中,我们新增了一个临时变量 `tempEditRowData`,用于存储编辑行的数值。在调用 `sub.addRow(row)` 之前,我们先调用 `sub.editRow()` 来保存编辑行的数值,并将其存储在 `tempEditRowData` 中。然后,在插入新行后,我们使用 `tempEditRowData` 的数值重新设置编辑行的输入框内容。
希望这次能够解决您的问题!如果您还有其他疑问,请随时提问。