添加 editable 到 bootstrap table
Add editable to bootstrap table
我尝试使用 bootstrap table editable。在我的 jsp 页面中,我有:
<div class="row mystyle" >
<div class="col-md-10">
<table id="mytable" class="table table-hover" id="table-pagination"
data-url="data.json"
data-toggle="table"
data-pagination="true"
data-show-pagination-switch="true"
data-sort-order="desc"
data-show-export="true"
data-search="true"
data-show-toggle="true"
data-show-refresh="true"
data-show-columns="true"
data-page-list="[10, 25, 50, 100, ALL]">
<thead>
<tr>
<th data-field="id" data-align="center">id</th>
<th data-field="type" data-align="center">type</th>
<th data-field="quantity" data-align="right" data-sortable="true">cost</th>
</tr>
</thead>
</table>
</div>
我的 table 表现出色。现在我想添加 editable method。我添加了 <script src="assets/js/bootstrap-table-editable.js"></script>
然后怎么办?我不清楚(我是新手..),我如何继续..
通过选择 table 和 jquery:
来调用 editable
var options = {};
$("#mytable").editable(options);
有关完整规格和选项列表,请查看 here
您需要添加 bootstrap-editable.js
文件,因为我们的扩展是基于 x-editable
的,例如:source.
对于任何感兴趣的人,这里有一个具有单元格编辑功能的 Reactstrap table。参见 https://github.com/msb1/reactstrap-functional-table
如果您想在 Bootstrap Table.
中使用可编辑字段,使用 X-editable 插件非常简单
您只需在编辑模式下将 data-editable="true"
设置为您想要的字段。
如果您为列传递对象数组,他们将此 属性 添加到特定列 ex {"field": 'age' ,"editable":true
所有你必须确保你使用的是稳定版本的 CDN。
实施:
首先创建一个文件并在其中写入这段代码,然后简单地导入它。
/**
* @author zhixin wen
* extensions: https://github.com/vitalets/x-editable
*/
!function ($) {
'use strict';
$.extend($.fn.bootstrapTable.defaults, {
editable: true,
onEditableInit: function () {
return false;
},
onEditableSave: function (field, row, oldValue, $el) {
return false;
},
onEditableShown: function (field, row, $el, editable) {
return false;
},
onEditableHidden: function (field, row, $el, reason) {
return false;
}
});
$.extend($.fn.bootstrapTable.Constructor.EVENTS, {
'editable-init.bs.table': 'onEditableInit',
'editable-save.bs.table': 'onEditableSave',
'editable-shown.bs.table': 'onEditableShown',
'editable-hidden.bs.table': 'onEditableHidden'
});
var BootstrapTable = $.fn.bootstrapTable.Constructor,
_initTable = BootstrapTable.prototype.initTable,
_initBody = BootstrapTable.prototype.initBody;
BootstrapTable.prototype.initTable = function () {
var that = this;
_initTable.apply(this, Array.prototype.slice.apply(arguments));
if (!this.options.editable) {
return;
}
$.each(this.columns, function (i, column) {
if (!column.editable) {
return;
}
var editableOptions = {}, editableDataMarkup = [], editableDataPrefix = 'editable-';
var processDataOptions = function(key, value) {
// Replace camel case with dashes.
var dashKey = key.replace(/([A-Z])/g, function(){return "-"+.toLowerCase();});
if (dashKey.slice(0, editableDataPrefix.length) == editableDataPrefix) {
var dataKey = dashKey.replace(editableDataPrefix, 'data-');
editableOptions[dataKey] = value;
}
};
$.each(that.options, processDataOptions);
var _formatter = column.formatter;
column.formatter = function (value, row, index) {
var result = _formatter ? _formatter(value, row, index) : value;
$.each(column, processDataOptions);
$.each(editableOptions, function (key, value) {
editableDataMarkup.push(' ' + key + '="' + value + '"');
});
return ['<a href="javascript:void(0)"',
' data-name="' + column.field + '"',
' data-pk="' + row[that.options.idField] + '"',
' data-value="' + result + '"',
editableDataMarkup.join(''),
'>' + '</a>'
].join('');
};
});
};
BootstrapTable.prototype.initBody = function () {
var that = this;
_initBody.apply(this, Array.prototype.slice.apply(arguments));
if (!this.options.editable) {
return;
}
$.each(this.columns, function (i, column) {
if (!column.editable) {
return;
}
that.$body.find('a[data-name="' + column.field + '"]').editable(column.editable)
.off('save').on('save', function (e, params) {
var data = that.getData(),
index = $(this).parents('tr[data-index]').data('index'),
row = data[index],
oldValue = row[column.field];
$(this).data('value', params.submitValue);
row[column.field] = params.submitValue;
that.trigger('editable-save', column.field, row, oldValue, $(this));
});
that.$body.find('a[data-name="' + column.field + '"]').editable(column.editable)
.off('shown').on('shown', function (e, editable) {
var data = that.getData(),
index = $(this).parents('tr[data-index]').data('index'),
row = data[index];
that.trigger('editable-shown', column.field, row, $(this), editable);
});
that.$body.find('a[data-name="' + column.field + '"]').editable(column.editable)
.off('hidden').on('hidden', function (e, reason) {
var data = that.getData(),
index = $(this).parents('tr[data-index]').data('index'),
row = data[index];
that.trigger('editable-hidden', column.field, row, $(this), reason);
});
});
this.trigger('editable-init');
};
}(jQuery);
然后将此 cdn 也添加到您的文件中,就在导入第一个文件之后。
<script src="//cdnjs.cloudflare.com/ajax/libs/x-editable/1.5.0/bootstrap3-editable/js/bootstrap-editable.min.js"></script>
希望有用。
我尝试使用 bootstrap table editable。在我的 jsp 页面中,我有:
<div class="row mystyle" >
<div class="col-md-10">
<table id="mytable" class="table table-hover" id="table-pagination"
data-url="data.json"
data-toggle="table"
data-pagination="true"
data-show-pagination-switch="true"
data-sort-order="desc"
data-show-export="true"
data-search="true"
data-show-toggle="true"
data-show-refresh="true"
data-show-columns="true"
data-page-list="[10, 25, 50, 100, ALL]">
<thead>
<tr>
<th data-field="id" data-align="center">id</th>
<th data-field="type" data-align="center">type</th>
<th data-field="quantity" data-align="right" data-sortable="true">cost</th>
</tr>
</thead>
</table>
</div>
我的 table 表现出色。现在我想添加 editable method。我添加了 <script src="assets/js/bootstrap-table-editable.js"></script>
然后怎么办?我不清楚(我是新手..),我如何继续..
通过选择 table 和 jquery:
来调用editable
var options = {};
$("#mytable").editable(options);
有关完整规格和选项列表,请查看 here
您需要添加 bootstrap-editable.js
文件,因为我们的扩展是基于 x-editable
的,例如:source.
对于任何感兴趣的人,这里有一个具有单元格编辑功能的 Reactstrap table。参见 https://github.com/msb1/reactstrap-functional-table
如果您想在 Bootstrap Table.
中使用可编辑字段,使用 X-editable 插件非常简单您只需在编辑模式下将 data-editable="true"
设置为您想要的字段。
如果您为列传递对象数组,他们将此 属性 添加到特定列 ex {"field": 'age' ,"editable":true
所有你必须确保你使用的是稳定版本的 CDN。
实施:
首先创建一个文件并在其中写入这段代码,然后简单地导入它。
/**
* @author zhixin wen
* extensions: https://github.com/vitalets/x-editable
*/
!function ($) {
'use strict';
$.extend($.fn.bootstrapTable.defaults, {
editable: true,
onEditableInit: function () {
return false;
},
onEditableSave: function (field, row, oldValue, $el) {
return false;
},
onEditableShown: function (field, row, $el, editable) {
return false;
},
onEditableHidden: function (field, row, $el, reason) {
return false;
}
});
$.extend($.fn.bootstrapTable.Constructor.EVENTS, {
'editable-init.bs.table': 'onEditableInit',
'editable-save.bs.table': 'onEditableSave',
'editable-shown.bs.table': 'onEditableShown',
'editable-hidden.bs.table': 'onEditableHidden'
});
var BootstrapTable = $.fn.bootstrapTable.Constructor,
_initTable = BootstrapTable.prototype.initTable,
_initBody = BootstrapTable.prototype.initBody;
BootstrapTable.prototype.initTable = function () {
var that = this;
_initTable.apply(this, Array.prototype.slice.apply(arguments));
if (!this.options.editable) {
return;
}
$.each(this.columns, function (i, column) {
if (!column.editable) {
return;
}
var editableOptions = {}, editableDataMarkup = [], editableDataPrefix = 'editable-';
var processDataOptions = function(key, value) {
// Replace camel case with dashes.
var dashKey = key.replace(/([A-Z])/g, function(){return "-"+.toLowerCase();});
if (dashKey.slice(0, editableDataPrefix.length) == editableDataPrefix) {
var dataKey = dashKey.replace(editableDataPrefix, 'data-');
editableOptions[dataKey] = value;
}
};
$.each(that.options, processDataOptions);
var _formatter = column.formatter;
column.formatter = function (value, row, index) {
var result = _formatter ? _formatter(value, row, index) : value;
$.each(column, processDataOptions);
$.each(editableOptions, function (key, value) {
editableDataMarkup.push(' ' + key + '="' + value + '"');
});
return ['<a href="javascript:void(0)"',
' data-name="' + column.field + '"',
' data-pk="' + row[that.options.idField] + '"',
' data-value="' + result + '"',
editableDataMarkup.join(''),
'>' + '</a>'
].join('');
};
});
};
BootstrapTable.prototype.initBody = function () {
var that = this;
_initBody.apply(this, Array.prototype.slice.apply(arguments));
if (!this.options.editable) {
return;
}
$.each(this.columns, function (i, column) {
if (!column.editable) {
return;
}
that.$body.find('a[data-name="' + column.field + '"]').editable(column.editable)
.off('save').on('save', function (e, params) {
var data = that.getData(),
index = $(this).parents('tr[data-index]').data('index'),
row = data[index],
oldValue = row[column.field];
$(this).data('value', params.submitValue);
row[column.field] = params.submitValue;
that.trigger('editable-save', column.field, row, oldValue, $(this));
});
that.$body.find('a[data-name="' + column.field + '"]').editable(column.editable)
.off('shown').on('shown', function (e, editable) {
var data = that.getData(),
index = $(this).parents('tr[data-index]').data('index'),
row = data[index];
that.trigger('editable-shown', column.field, row, $(this), editable);
});
that.$body.find('a[data-name="' + column.field + '"]').editable(column.editable)
.off('hidden').on('hidden', function (e, reason) {
var data = that.getData(),
index = $(this).parents('tr[data-index]').data('index'),
row = data[index];
that.trigger('editable-hidden', column.field, row, $(this), reason);
});
});
this.trigger('editable-init');
};
}(jQuery);
然后将此 cdn 也添加到您的文件中,就在导入第一个文件之后。
<script src="//cdnjs.cloudflare.com/ajax/libs/x-editable/1.5.0/bootstrap3-editable/js/bootstrap-editable.min.js"></script>
希望有用。