作者 Karson

修复表格在多个列头时buttons的事件可能不响应的BUG

移除表格按钮columnIndex,增加fieldIndex属性
... ... @@ -113,12 +113,26 @@ define(['fast', 'moment'], function (Fast, Moment) {
$(document).on('click', '.btn-dialog,.dialogit', function (e) {
var that = this;
var options = $.extend({}, $(that).data() || {});
if (typeof options.tableId !== 'undefined' && typeof options.columnIndex !== 'undefined' && typeof options.buttonIndex !== 'undefined') {
if (typeof options.tableId !== 'undefined' && typeof options.fieldIndex !== 'undefined' && typeof options.buttonIndex !== 'undefined') {
var tableOptions = $("#" + options.tableId).bootstrapTable('getOptions');
if (tableOptions) {
var button = tableOptions.columns[0][options.columnIndex]['buttons'][options.buttonIndex];
if (button && typeof button.callback === 'function') {
options.callback = button.callback;
var columnObj = null;
$.each(tableOptions.columns, function (i, columns) {
$.each(columns, function (j, column) {
if (typeof column.fieldIndex !== 'undefined' && column.fieldIndex === options.fieldIndex) {
columnObj = column;
return false;
}
});
if (columnObj) {
return false;
}
});
if (columnObj) {
var button = columnObj['buttons'][options.buttonIndex];
if (button && typeof button.callback === 'function') {
options.callback = button.callback;
}
}
}
}
... ... @@ -159,15 +173,29 @@ define(['fast', 'moment'], function (Fast, Moment) {
var error = typeof options.error === 'function' ? options.error : null;
delete options.success;
delete options.error;
if (typeof options.tableId !== 'undefined' && typeof options.columnIndex !== 'undefined' && typeof options.buttonIndex !== 'undefined') {
if (typeof options.tableId !== 'undefined' && typeof options.fieldIndex !== 'undefined' && typeof options.buttonIndex !== 'undefined') {
var tableOptions = $("#" + options.tableId).bootstrapTable('getOptions');
if (tableOptions) {
var button = tableOptions.columns[0][options.columnIndex]['buttons'][options.buttonIndex];
if (button && typeof button.success === 'function') {
success = button.success;
}
if (button && typeof button.error === 'function') {
error = button.error;
var columnObj = null;
$.each(tableOptions.columns, function (i, columns) {
$.each(columns, function (j, column) {
if (typeof column.fieldIndex !== 'undefined' && column.fieldIndex === options.fieldIndex) {
columnObj = column;
return false;
}
});
if (columnObj) {
return false;
}
});
if (columnObj) {
var button = columnObj['buttons'][options.buttonIndex];
if (button && typeof button.success === 'function') {
success = button.success;
}
if (button && typeof button.error === 'function') {
error = button.error;
}
}
}
}
... ...
... ... @@ -6911,12 +6911,26 @@ define('backend',['fast', 'moment'], function (Fast, Moment) {
$(document).on('click', '.btn-dialog,.dialogit', function (e) {
var that = this;
var options = $.extend({}, $(that).data() || {});
if (typeof options.tableId !== 'undefined' && typeof options.columnIndex !== 'undefined' && typeof options.buttonIndex !== 'undefined') {
if (typeof options.tableId !== 'undefined' && typeof options.fieldIndex !== 'undefined' && typeof options.buttonIndex !== 'undefined') {
var tableOptions = $("#" + options.tableId).bootstrapTable('getOptions');
if (tableOptions) {
var button = tableOptions.columns[0][options.columnIndex]['buttons'][options.buttonIndex];
if (button && typeof button.callback === 'function') {
options.callback = button.callback;
var columnObj = null;
$.each(tableOptions.columns, function (i, columns) {
$.each(columns, function (j, column) {
if (typeof column.fieldIndex !== 'undefined' && column.fieldIndex === options.fieldIndex) {
columnObj = column;
return false;
}
});
if (columnObj) {
return false;
}
});
if (columnObj) {
var button = columnObj['buttons'][options.buttonIndex];
if (button && typeof button.callback === 'function') {
options.callback = button.callback;
}
}
}
}
... ... @@ -6957,15 +6971,29 @@ define('backend',['fast', 'moment'], function (Fast, Moment) {
var error = typeof options.error === 'function' ? options.error : null;
delete options.success;
delete options.error;
if (typeof options.tableId !== 'undefined' && typeof options.columnIndex !== 'undefined' && typeof options.buttonIndex !== 'undefined') {
if (typeof options.tableId !== 'undefined' && typeof options.fieldIndex !== 'undefined' && typeof options.buttonIndex !== 'undefined') {
var tableOptions = $("#" + options.tableId).bootstrapTable('getOptions');
if (tableOptions) {
var button = tableOptions.columns[0][options.columnIndex]['buttons'][options.buttonIndex];
if (button && typeof button.success === 'function') {
success = button.success;
}
if (button && typeof button.error === 'function') {
error = button.error;
var columnObj = null;
$.each(tableOptions.columns, function (i, columns) {
$.each(columns, function (j, column) {
if (typeof column.fieldIndex !== 'undefined' && column.fieldIndex === options.fieldIndex) {
columnObj = column;
return false;
}
});
if (columnObj) {
return false;
}
});
if (columnObj) {
var button = columnObj['buttons'][options.buttonIndex];
if (button && typeof button.success === 'function') {
success = button.success;
}
if (button && typeof button.error === 'function') {
error = button.error;
}
}
}
}
... ... @@ -10005,9 +10033,8 @@ define('table',['jquery', 'bootstrap', 'moment', 'moment/locale/zh-cn', 'bootstr
var options = table ? table.bootstrapTable('getOptions') : {};
var html = [];
var url, classname, icon, text, title, extend;
var columnIndex = options.columns[0].findIndex(function (element) {
return element === column;
});
var fieldIndex = column.fieldIndex;
$.each(buttons, function (i, j) {
if (type === 'operate') {
if (j.name === 'dragsort' && typeof row[Table.config.dragsortfield] === 'undefined') {
... ... @@ -10028,7 +10055,7 @@ define('table',['jquery', 'bootstrap', 'moment', 'moment/locale/zh-cn', 'bootstr
refresh = j.refresh ? 'data-refresh="' + j.refresh + '"' : '';
confirm = j.confirm ? 'data-confirm="' + j.confirm + '"' : '';
extend = j.extend ? j.extend : '';
html.push('<a href="' + url + '" class="' + classname + '" ' + (confirm ? confirm + ' ' : '') + (refresh ? refresh + ' ' : '') + extend + ' title="' + title + '" data-table-id="' + (table ? table.attr("id") : '') + '" data-column-index="' + columnIndex + '" data-row-index="' + index + '" data-button-index="' + i + '"><i class="' + icon + '"></i>' + (text ? ' ' + text : '') + '</a>');
html.push('<a href="' + url + '" class="' + classname + '" ' + (confirm ? confirm + ' ' : '') + (refresh ? refresh + ' ' : '') + extend + ' title="' + title + '" data-table-id="' + (table ? table.attr("id") : '') + '" data-field-index="' + fieldIndex + '" data-row-index="' + index + '" data-button-index="' + i + '"><i class="' + icon + '"></i>' + (text ? ' ' + text : '') + '</a>');
}
});
return html.join(' ');
... ...
... ... @@ -432,9 +432,8 @@ define(['jquery', 'bootstrap', 'moment', 'moment/locale/zh-cn', 'bootstrap-table
var options = table ? table.bootstrapTable('getOptions') : {};
var html = [];
var url, classname, icon, text, title, extend;
var columnIndex = options.columns[0].findIndex(function (element) {
return element === column;
});
var fieldIndex = column.fieldIndex;
$.each(buttons, function (i, j) {
if (type === 'operate') {
if (j.name === 'dragsort' && typeof row[Table.config.dragsortfield] === 'undefined') {
... ... @@ -455,7 +454,7 @@ define(['jquery', 'bootstrap', 'moment', 'moment/locale/zh-cn', 'bootstrap-table
refresh = j.refresh ? 'data-refresh="' + j.refresh + '"' : '';
confirm = j.confirm ? 'data-confirm="' + j.confirm + '"' : '';
extend = j.extend ? j.extend : '';
html.push('<a href="' + url + '" class="' + classname + '" ' + (confirm ? confirm + ' ' : '') + (refresh ? refresh + ' ' : '') + extend + ' title="' + title + '" data-table-id="' + (table ? table.attr("id") : '') + '" data-column-index="' + columnIndex + '" data-row-index="' + index + '" data-button-index="' + i + '"><i class="' + icon + '"></i>' + (text ? ' ' + text : '') + '</a>');
html.push('<a href="' + url + '" class="' + classname + '" ' + (confirm ? confirm + ' ' : '') + (refresh ? refresh + ' ' : '') + extend + ' title="' + title + '" data-table-id="' + (table ? table.attr("id") : '') + '" data-field-index="' + fieldIndex + '" data-row-index="' + index + '" data-button-index="' + i + '"><i class="' + icon + '"></i>' + (text ? ' ' + text : '') + '</a>');
}
});
return html.join(' ');
... ...