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 相关文章推荐
JavaScript学习点滴 call、apply的区别
Oct 22 Javascript
javascript对话框使用方法(警告框 javascript确认框 提示框)
Jan 07 Javascript
JavaScript利用append添加元素报错的解决方法
Jul 01 Javascript
限制上传文件大小和格式的jQuery插件实例
Jan 24 Javascript
jQuery动态效果显示人物结构关系图的方法
May 07 Javascript
jQuery实现hover合成事件的方法
Aug 06 Javascript
JavaScript编写点击查看大图的页面半透明遮罩层效果实例
May 09 Javascript
bootstrap与Jquery UI 按钮样式冲突的解决办法
Sep 23 Javascript
js拼接html字符串的注意事项
Oct 13 Javascript
npm的lock机制解析
Jun 20 Javascript
js中console在一行内打印字符串和对象的方法
Sep 10 Javascript
vue setInterval 定时器失效的解决方式
Jul 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 图像尺寸调整代码
2010/05/26 PHP
jquery的ajax和getJson跨域获取json数据的实现方法
2014/02/04 Javascript
js实现点击向下展开的下拉菜单效果代码
2015/09/01 Javascript
jquery实现顶部向右伸缩的导航区域代码
2015/09/02 Javascript
Bootstrap每天必学之基础排版
2015/11/20 Javascript
javascript中arguments,callee,caller详解
2016/03/16 Javascript
Jquery轮播效果实现过程解析
2016/03/30 Javascript
jQuery弹出遮罩层效果完整示例
2016/09/13 Javascript
详解jQuery简单的表单应用
2016/12/16 Javascript
js实现简易垂直滚动条
2017/02/22 Javascript
vue.js选中动态绑定的radio的指定项
2017/06/02 Javascript
老生常谈Bootstrap媒体对象
2017/07/06 Javascript
Nodejs+express+ejs简单使用实例代码
2017/09/18 NodeJs
简单通过settimeout看javascript的运行机制
2019/05/10 Javascript
ES6小技巧之代替lodash
2019/06/07 Javascript
深入解读VUE中的异步渲染的实现
2020/06/19 Javascript
vue动画—通过钩子函数实现半场动画操作
2020/08/09 Javascript
[47:52]DOTA2-DPC中国联赛正赛 iG vs LBZS BO3 第二场 3月4日
2021/03/11 DOTA
Python使用plotly绘制数据图表的方法
2017/07/18 Python
分分钟入门python语言
2018/03/20 Python
linux下python使用sendmail发送邮件
2018/05/22 Python
Python wxPython库Core组件BoxSizer用法示例
2018/09/03 Python
python支付宝支付示例详解
2019/08/22 Python
python 实现多线程下载视频的代码
2019/11/15 Python
在flask中使用python-dotenv+flask-cli自定义命令(推荐)
2020/01/05 Python
pytorch ImageFolder的覆写实例
2020/02/20 Python
Django celery异步任务实现代码示例
2020/11/26 Python
10个python爬虫入门基础代码实例 + 1个简单的python爬虫完整实例
2020/12/16 Python
python+selenium实现12306模拟登录的步骤
2021/01/21 Python
阿迪达斯俄罗斯官方商城:adidas俄罗斯
2017/03/08 全球购物
土建资料员岗位职责
2014/01/04 职场文书
可口可乐广告词
2014/03/20 职场文书
餐厅收银员岗位职责
2015/04/07 职场文书
辞职报告(范文三篇)
2019/08/27 职场文书
canvas实现贪食蛇的实践
2022/02/15 Javascript
python实现简单的三子棋游戏
2022/04/28 Python