BootStrap Table行内编辑

  • $element 当前点击td的Dom元素

*/

onClickCell: function(field, value, row, $element) {

$element.attr(‘contenteditable’, true);

//元素失去焦点事件

$element.blur(function() {

//单元格修改后的的值

let tdValue = $element.html();

console.log(field);

console.log(tdValue);

console.log(row);

})

}

添加上面代码后,就可以看到单元格的可编辑效果了。如下图。

在这里插入图片描述

修改后的数据,单元格失去焦点后控制台输出的数据。

在这里插入图片描述

可以看出表格内容是修改了,但DOM中的当前行row内容却没有和表格中数据同步,需要通过表格的updateCell方法来更新一下单元格的数据。

在这里插入图片描述

修改后代码如下。

onClickCell: function(field, value, row, $element) {

$element.attr(‘contenteditable’, true);

//元素失去焦点事件

$element.blur(function() {

//单元格修改后的的值

let tdValue = $element.html();

let index = $element.parent().data(‘index’);

//updateCell更新某单元格数据

$(“#tbClass_table”).bootstrapTable(‘updateCell’, {

index: index, //行索引

field: field, //列名

value: tdValue //cell值

})

console.log(field);

console.log(tdValue);

console.log(row);

})

}

});

控制台输出内容。

在这里插入图片描述

但DOM中的当前行row内容是和表格中是同步的。之后就可以把修改的数据保存到数据库中了。

在这里插入图片描述

通过AJAX向后台发送编辑保存的请求即可。参数因为row中的数据是和表格中的数据通路边的,所以可以直接把row整体当做参数传递到后台进行修改保存。传递的参数中第一个参数是表格前的复选框值,后台不做处理就可以了。

在这里插入图片描述

到这里第一种方法就写完了。下面来看一下第二种方法。

第二种方法

通过bootstrap-editable插件来实现。editable组件是一款用于创建可编辑弹出框的插件,封装的很全面,也很好用。

bootstrap-editable下载地址。

方法思路

和第一种方法一样结合BootStrap Table中onClickCell单击单元格事件和onDblClickCell双击单元格事件属性来实现。根据项目需求设置单击或者双击事件触发编辑单元格内容事件。

之后第一步当然是引入相关的文件了。

其中bootstrap-table-editable.js是下载文件中没有的。bootstrap-table-editable.js其实是对editable做了一个简单的封装,增加了列的editable属性以及编辑保存后的一些事件。使其对表格的操作更简单。bootstrap-table-editable.js文件代码如下。

/**

  • bootstrap-table-editable.js

  • @author zhixin wen wenzhixin2010@gmail.com

  • extensions: https://github.com/vitalets/x-editable

*/

!function ($) {

‘use strict’;

. e x t e n d ( .extend( .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;

}

});

. e x t e n d ( .extend( .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 _formatter = column.formatter;

column.formatter = function (value, row, index) {

var result = _formatter ? _formatter(value, row, index) : value;

return [‘<a href=“javascript:void(0)”’,

’ data-name=“’ + column.field + '”',

’ data-pk=“’ + row[that.options.idField] + '”',

’ data-value=“’ + result + '”',

‘>’ + ‘’

].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];

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);

在渲染表格数据时,设置某列可以编辑。

{

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Bootstrap Table是一个基于Bootstrap的可扩展表格插件,支持行内编辑功能。通过设置editable选项为true,可以启用行内编辑功能。当用户单击单元格时,单元格将变为可编辑状态,用户可以在单元格中输入新。当用户完成编辑并按下Enter键或单击其他单元格时,新将保存到数据源中。同时,Bootstrap Table还提供了许多事件和方法,可以帮助您更好地控制行内编辑功能。 ### 回答2: Bootstrap Table是一种基于Bootstrap构建的灵活的、强大的、直观的、易于使用的表格插件。Bootstrap Table提供了许多功能,其中之一就是行内编辑Bootstrap Table行内编辑功能让用户能够直接在表格中编辑数据,这一功能非常实用且节省时间。 使用Bootstrap Table行内编辑功能时,我们需要将表格的editable选项设置为true。这样可以启用行内编辑功能,并且可以配置每个单元格编辑器。Bootstrap Table支持多种类型的编辑器,包括文本框、下拉框、日期选择器等。 当用户点击单元格时,该单元格将变为可编辑状态,并且显示相应的编辑器。用户可以通过编辑修改单元格中的内容。当用户完成编辑时,可以点击单元格以外的区域或按下Enter键保存修改,或者按下Esc键取消修改。 在使用Bootstrap Table行内编辑功能时,还可以配置编辑后的事件。可以在编辑后执行一些自定义的操作,例如更新数据库、重新计算数据、刷新表格等。此外,也可以配置编辑时和编辑完成时的样式,以增强用户体验。 通过以上方式,我们可以使用Bootstrap Table行内编辑功能来编辑表格中的数据。行内编辑是一种非常实用且方便的功能,能够提高数据处理的效率,减少工作量,增强用户体验。 ### 回答3: BootstrapTable是一种流行的基于Bootstrap的表格插件。BootstrapTable行内编辑功能为用户带来了更改表格内容的便利性。 在BootstrapTable中,行内编辑可以通过两种方式实现:弹出式编辑和内联编辑。 弹出式编辑需要通过设置editable: { popup: true }来启用。这将在单击编辑图标时弹出编辑表单。通过设置编辑类型(例如输入框、下拉框等)并提供保存和取消按钮,用户可以在编辑表单中修改数据。在保存时,表格将更新相应的数据。如果取消编辑,表格将回到原始状态。 内联编辑需要通过设置editable: { mode: "inline" }来启用。这将允许用户直接在表格中编辑数据。单击单元格时会显示编辑框。用户可以在编辑框中进行更改,然后按Enter键将更改保存到表格中。对于文本和数字数据,BootstrapTable提供输入框。对于日期数据,它提供日期选择器。对于下拉框数据,它提供下拉框。 此外,BootstrapTable还支持行内编辑时的回调函数。这些函数将使开发人员能够检查用户的更改,并根据需要执行其他操作。如果用户只需更改数据而不需要执行其他操作,则无需编写回调函数。 BootstrapTable行内编辑功能是一个非常有用的功能,可以使表格操作更加方便和快捷。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值