Bootstrap Table 在指定列中添加下拉框控件并获取所选值


Posted in Javascript onJuly 31, 2017

背景

最近在使用Bootstrap table ,有一个在某一列添加一个下拉列表,并且通过 “getAllSelections”方法获取所选行的需求,在实现这个功能的时,走了一些弯路,遇到了一些坑。所以今天总结出来,既是自己的学习,也分享给大家,希望能够有些帮助。

如何解决

添加这个下拉列表有以下两种方法:

  • 利用Column options 中的 formatter 将数据转换成下拉列表的形式
  • 使用bootstrap-table拓展中的editable插件

这次主要介绍第一种,基本的思路为:首先通过 bootstrap-table 的Column 配置项中的formatter,将获取到的数据转换为包含数据的 select 控件。然后根据用户选择项更新对应单元格数据,最后通过getallselection方法获取所选行数据。

formatter,其配置项为function,有三个参数:(value,row,index)

formatter: setSelect
function setSelect(value, row, index) 
{
  var strHtml = "";
  if (value == "Item 1") 
  {
    strHtml = "<select class='ss'><option value='Item 1' selected='selected'>Item 1</option><option value='Item 2'>Item 2</option></select>";
   } 
   else 
   {
    strHtml = "<select class='ss'><option value='Item 1' >Item 1</option><option value='Item 2' selected='selected'>Item 2</option></select>";
   }
   return strHtml;
}

到这里,下拉列表已经可以显示出来了,但是如果直接使用 getallselection 方法获取所选内容会有问题:获取到的数据是默认表格初始化加载的内容,并不是重新选择的内容。

  bootstrap-table是一个jQuery插件,直接在html上面修改是获取不到的,要修改需要通过它自己的方法。bootstrap-table 在Methods 中提供了一个updateCell的方法。

updateCell ,包含了三个参数(index,field,value),在某一行的某一列更新value。

$('#table').bootstrapTable('updateCell', {
  index: indexSelected,
  field: 'name',
  value: valueSelected
 })

events

完成了下拉列表的显示,有了更新单元格值的方法,还需要做的是为下拉列表的选择绑定事件,实现下拉列表选择->改变单元格值。

我们可以在select元素上绑定onchange事件,或者使用jquery的change 事件。

$(".ss").change(function() {
 var indexSelected = $(this).parent().parent()[0].rowIndex - 1;
 var valueSelected = $(this).children('option:selected').val();
 $('#table').bootstrapTable('updateCell', {
  index: indexSelected,
  field: 'name',
  value: valueSelected
 })
});

但是经过测试,发现$(“.ss”).change()只是在页面加载后第一次选择可以触发,后来在bootstrap-table的文档中发现了events项,可以监听单元格事件,和formatter 配合着用。

events: {'change .ss': function (e, value, row, index) {}};
//value是当前单元格的值,row是当前行,index是当前行的索引值
  • change 传递的是jQuery事件
  • .ss 是jQuery的类选择器

上面是在JSFiddle做的一个小Demo,有源码和显示效果,可以参考一下。

小结

有的时候,我们会遇到一个别人没有遇到过的问题,并没有在网上找到直接的解决方案。那么一定要去关注他的官方文档,甚至可以直接联系作者。

还有以bootstrap-table来说,它本身是一个jQuery插件,如果理解了一个jQuery插件具体是如何工作的,对于解决问题会是非常有帮助的。

以上所述是小编给大家介绍的Bootstrap Table 在指定列中添加下拉框控件并获取所选值,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
jQuery右键菜单contextMenu使用实例
Sep 28 Javascript
jquery中animate动画积累的解决方法
Oct 05 Javascript
浅析jQuery中调用ajax方法时在不同浏览器中遇到的问题
Jun 11 Javascript
jQuery中:has选择器用法实例
Dec 30 Javascript
基于jquery实现动态竖向柱状条特效
Feb 12 Javascript
AngularJS 中文API参考手册
Jul 28 Javascript
基于JQuery的购物车添加删除以及结算功能示例
Mar 08 Javascript
Vue.js 中的 v-cloak 指令及使用详解
Nov 19 Javascript
JS实现的tab页切换效果完整示例
Dec 18 Javascript
浅谈layui 数据表格前后台传值的问题
Sep 12 Javascript
前端vue-cli项目中使用img图片和background背景图的几种方法
Nov 13 Javascript
JavaScript语法约定和程序调试原理解析
Nov 03 Javascript
vue组件 $children,$refs,$parent的使用详解
Jul 31 #Javascript
Kindeditor单独调用单图上传增加预览功能的实例
Jul 31 #Javascript
Kindeditor单独调用多图上传实例
Jul 31 #Javascript
老生常谈ES6中的类
Jul 31 #Javascript
JS时间控制实现动态效果的实例讲解
Jul 31 #Javascript
JavaScript实现简单的双色球(实例讲解)
Jul 31 #Javascript
深入理解Vue transition源码分析
Jul 30 #Javascript
You might like
require(),include(),require_once()和include_once()区别
2008/03/27 PHP
PHP 反向排序和随机排序代码
2010/06/30 PHP
ThinkPHP的cookie和session冲突造成Cookie不能使用的解决方法
2014/07/01 PHP
PHP编程获取各个时间段具体时间的方法
2017/05/26 PHP
phpwind放自动注册方法
2006/12/02 Javascript
兼容IE与firefox火狐的回车事件(js与jquery)
2010/10/20 Javascript
使用jQuery实现的掷色子游戏动画效果
2014/03/14 Javascript
中文输入法不触发onkeyup事件的解决办法
2014/07/09 Javascript
用循环或if语句从json中取数据示例
2014/08/18 Javascript
完美实现bootstrap分页查询
2015/12/09 Javascript
jquery实现一个简单的表单验证实例
2016/03/30 Javascript
jQuery加载及解析XML文件的方法实例分析
2017/01/22 Javascript
js面向对象编程总结
2017/02/16 Javascript
NodeJS简单实现WebSocket功能示例
2018/02/10 NodeJs
JavaScript事件对象event用法分析
2018/07/27 Javascript
微信小程序自定义toast组件的方法详解【含动画】
2019/05/11 Javascript
js中addEventListener()与removeEventListener()用法案例分析
2020/03/02 Javascript
ES5新增数组的实现方法
2020/05/12 Javascript
python编程开发之日期操作实例分析
2015/11/13 Python
Python3 XML 获取雅虎天气的实现方法
2018/02/01 Python
python实现n个数中选出m个数的方法
2018/11/13 Python
对python文件读写的缓冲行为详解
2019/02/13 Python
Python手绘可视化工具cutecharts使用实例
2019/12/05 Python
python列表切片和嵌套列表取值操作详解
2020/02/27 Python
Pycharm配置lua编译环境过程图解
2020/11/28 Python
纯CSS3绘制打火机动画火焰效果
2016/07/18 HTML / CSS
服装销售人员求职自我评价
2013/09/26 职场文书
2014教师专业技术工作总结
2014/12/03 职场文书
药房管理制度范本
2015/08/06 职场文书
交通安全教育主题班会
2015/08/12 职场文书
2016年记者节感言
2015/12/08 职场文书
交通事故协议书范本
2016/03/19 职场文书
用Python将库打包发布到pypi
2021/04/13 Python
Java多条件判断场景中规则执行器的设计
2021/06/26 Java/Android
mapstruct的用法之qualifiedByName示例详解
2022/04/06 Java/Android
Sentry的安装、配置、使用教程(Sentry日志手机系统)
2022/07/23 Python