java和bootstrap实现行内编辑

实现BootstrapTable单个单元格编辑后立马提交保存、批量编辑已经选中的单元格后提交保存的实现。

排序有点乱了,随便记一下吧,
大概就是引入这三个文件,

首先引入x-editable相关的js、css文件:

<!-- 单元格编辑 bootstrap table editable --> 
<link href="<%=basePath%>static/bootstrapStatic/editable/css/bootstrap-editable.css" rel="stylesheet"> 
<script src="<%=basePath%>static/bootstrapStatic/editable/js/bootstrap-editable.js"></script> 
<script src="<%=basePath%>static/bootstrapStatic/editable/js/bootstrap-table-editable.js"></script>
<!-- 单元格编辑 bootstrap table editable -->

当然bootstrap的一些基础文件也要的吧,比如:

<script src="static/js/jquery-1.11.1.min.js"></script>

<script src="static/bs/js/bootstrap.min.js"></script>
反正俺也是个半吊子, 

然后变色的地方自己按要求改一下,比如url接口,data好像是直接拿了那一行的数据?因为我只改了一个备注列,下次可以试试是不是一行。。。,id应该是用了field : 'id'传到接口那边也用@RequestParam Integer id接一下,要改的列也这样。
看起来难,搞起来还是可以搞的,大概就这样吧。

 

 

其中bootstrap-editable.css、bootstrap-editable.js需要下载 x-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';$.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_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 + '"', '>' + '</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]; 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);

正确引用js、css文件后,就可以去实现单元格编辑了。

1、单个单元格编辑马上ajax提交保存

<script type="text/javascript"> //查询参数
function queryParams(params) { return { limit : params.limit, offset : params.offset, nextPage : params.pageNumber,search : $('#search').val(), type : $('#type').val(), status : $('#status').val(), startTime : $('#startTime').val(),endTime : $('#endTime').val(), }; } $(function() { $('#dataGrid') .bootstrapTable( { url :'${prefix}/selectModelVoListPage', method : 'post', toolbar : '#toolbar', contentType : 'application/x-www-form-urlencoded', striped : true, showColumns : true, showRefresh : true, pagination : true, pageSize : 10, sortName : 'id',sidePagination : 'server', queryParamsType : 'limit', queryParams : queryParams, rowStyle: function (row, index) { //这里有5个取值代表5中颜色['active', 'success', 'info', 'warning', 'danger']; var strclass = ""; if (row.status == 0) { strclass = 'danger';//还有一个active } else if(row.status == 1) { strclass = 'active'; } else { return {}; } return {classes: strclass } },
onEditableSave: function (field, row, oldValue, $el) {//编辑单元格事件 $.ajax({ type : "POST", url :'appMenuGarden/editCell', data : row, dataType : 'json', cache : false, success : function(data) { if ("success" == data) { bootbox.alert("编辑成功");
$('#dataGrid').bootstrapTable('refresh'); } else { bootbox.alert(data); } }, error: function () { bootbox.alert('编辑失败'); }, complete: function () { } }); },
columns : [ { field : 'name', title : '功能名称', align : 'center', width : 100 }, { field : 'showName', title : '展示名称', align : 'center', width : 100, editable: { type: 'text', validate: function (value) { if ($.trim(value) == '') {return '展示名称不能为空!'; } } } }
, { field : 'sortNo', title : '排序', align : 'center', width : 100, editable: { type:'text', validate: function (value) { if ($.trim(value) == '') { return '排序不能为空!'; } } } } ] }); });</script>

上面的代码可以实现单个表格的编辑,效果如图,输入内容后点击√确定后会触发onEditableSave方法执行ajax请求提交数据保存。

 

 

2、批量编辑已经选中行的单元格统一保存实现

<script type="text/javascript"> //查询参数 function queryParams(params) { return { limit : params.limit, offset : params.offset, nextPage : params.pageNumber, name : $('#name3').val(), type : "2", status : "1", gardenIds : $('#gardenIds').val(), }; } $(function() { $('#dataGrid').bootstrapTable({ url : 'appMenu/menuForSelect', method :'post', toolbar : '#toolbar', contentType : 'application/x-www-form-urlencoded', striped : true, /* pagination : true, */pageSize : 9999999, sidePagination : 'server', queryParamsType : 'limit', queryParams : queryParams, columns : [ {checkbox : true }, { field : 'name', title : '功能名称', width : 150 }, { field : 'showName', title : '展示名称', align :'center', width : 100, formatter : function(value, row, index) { if(typeof(value) == 'undefined'){ row.showName = row.name; return row.name; } else { return value; } }, editable: { type: 'text', validate: function (value) { if($.trim(value) == '') { return '展示名称不能为空!'; } } } }, { field : 'sortNo', title : '排序', align : 'center', width: 100, editable: { type: 'text', validate: function (value) { if ($.trim(value) == '') { return '排序不能为空!'; } } } } ] }); });</script><script type="text/javascript"> function addgardenMenus() { bootbox.confirm("是否添加所选中的选项?",function(result) { if (result) { var menuRows = ""; var rowList = $('#dataGrid').bootstrapTable('getSelections'); for(var i = 0; i < rowList.length; i++) { menuRows += rowList[i].id + "-" + rowList[i].showName + "-" + rowList[i].sortNo +","; } $.ajax({ type : "POST", url : 'appMenuGarden/addGardenMenus', data : { gardenIds : gardenIds, menuRows : menuRows, }, dataType : 'json', cache : false, success : function(data) { if ("success" == data) { bootbox.alert("添加成功"); top.Dialog.close(); } else { bootbox.alert("添加失败!"); top.Dialog.close(); } } }); } }); }</script>

上面的代码可实现对已经勾选的行单元格批量编辑好之后,统一提交保存。效果如图,对于勾选中的两行进行单元格编辑后,点击保存按钮触发我们定义的addgardenMenus()方法执行数据提交保存的操作。

图片

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答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行内编辑功能是一个非常有用的功能,可以使表格操作更加方便和快捷。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值