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的网站幻灯片切换效果焦点图代码
Sep 15 Javascript
JS cookie中文乱码解决方法
Jan 28 Javascript
JavaScript动态修改弹出窗口大小的方法
Apr 06 Javascript
简介JavaScript中Math.cos()余弦方法的使用
Jun 15 Javascript
js小数运算出现多位小数如何解决
Oct 08 Javascript
JavaScript实现设计模式中的单例模式的一些技巧总结
May 17 Javascript
简单了解JavaScript操作XPath的一些基本方法
Jun 03 Javascript
JavaScript设计模式之策略模式详解
Jun 09 Javascript
基于input动态模糊查询的实现方法
Dec 12 Javascript
Angular4.x通过路由守卫进行路由重定向实现根据条件跳转到相应的页面(推荐)
May 10 Javascript
vue vue-Router默认hash模式修改为history需要做的修改详解
Sep 13 Javascript
使用post方法实现json往返传输数据的方法
Mar 30 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
php中使用preg_replace函数匹配图片并加上链接的方法
2013/02/06 PHP
ThinkPHP自动完成中使用函数与回调方法实例
2014/11/29 PHP
PHP过滤黑名单关键字的方法
2014/12/01 PHP
PHP PDO fetch 模式各种参数的输出结果一览
2015/01/07 PHP
在phpstudy集成环境下的nginx服务器下配置url重写
2019/12/02 PHP
JavaScript原生对象之Date对象的属性和方法详解
2015/03/13 Javascript
jquery获取url参数及url加参数的方法
2015/10/26 Javascript
canvas知识总结
2017/01/25 Javascript
vue.js事件处理器是什么
2017/03/20 Javascript
web.js.字符串与正则表达式操作
2017/05/13 Javascript
ejsExcel模板在Vue.js项目中的实际运用
2018/01/27 Javascript
vue项目中axios使用详解
2018/02/07 Javascript
Angular4学习笔记router的简单使用
2018/03/30 Javascript
详解在React.js中使用PureComponent的重要性和使用方式
2018/07/10 Javascript
jQuery+css last-child实现选择最后一个子元素操作示例
2018/12/10 jQuery
如何使用less实现随机下雪动画详解
2019/01/02 Javascript
详解vue 不同环境配置不同的打包命令
2019/04/07 Javascript
基于vue的tab-list类目切换商品列表组件的示例代码
2020/02/14 Javascript
VueQuillEditor富文本上传图片(非base64)
2020/06/03 Javascript
[53:29]完美世界DOTA2联赛循环赛 DM vs Matador BO2第二场 11.04
2020/11/05 DOTA
python模块之sys模块和序列化模块(实例讲解)
2017/09/13 Python
Python处理中文标点符号大集合
2018/05/14 Python
python得到一个excel的全部sheet标签值方法
2018/12/10 Python
python实现宿舍管理系统
2019/11/22 Python
python实现门限回归方式
2020/02/29 Python
带你认识HTML5中的WebSocket
2015/05/22 HTML / CSS
StubHub墨西哥:购买和出售您的门票
2016/09/17 全球购物
俄罗斯珠宝市场的领导者之一:Бронницкий ювелир
2019/10/02 全球购物
Otiumberg官网:英国半精致珠宝品牌
2021/01/16 全球购物
什么是Smart Navigation?
2016/07/03 面试题
高考寄语大全
2014/04/08 职场文书
夏季药店促销方案
2014/08/22 职场文书
信用卡工资证明格式
2014/09/13 职场文书
高中生学习计划书
2014/09/15 职场文书
医院党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
2015年国庆节新闻稿
2015/07/18 职场文书