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 相关文章推荐
用roll.js实现的图片自动滚动+鼠标触动的特效
Mar 18 Javascript
Web跨浏览器进程通信(Web跨域)
Apr 17 Javascript
js数组中如何随机取出一个值
Jun 13 Javascript
javascript自动恢复文本框点击清除后的默认文本
Jan 12 Javascript
在JavaScript中call()与apply()区别
Jan 22 Javascript
JavaScript中setTimeout的那些事儿
Nov 14 Javascript
JavaScript数据类型和变量_动力节点Java学院整理
Jun 26 Javascript
jQuery中each方法的使用详解
Mar 18 jQuery
vue路由--网站导航功能详解
Mar 29 Javascript
vue 父组件通过$refs获取子组件的值和方法详解
Nov 07 Javascript
微信小程序实现手指拖动选项排序
Apr 22 Javascript
Vue3.0的优化总结
Oct 16 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 获取客户端真实IP地址多种方法小结
2010/05/15 PHP
PHP 冒泡排序 二分查找 顺序查找 二维数组排序算法函数的详解
2013/06/25 PHP
Yii2中DropDownList简单用法示例
2016/07/18 PHP
PHP十六进制颜色随机生成器功能示例
2017/07/24 PHP
准确获得页面、窗口高度及宽度的JS
2006/11/26 Javascript
showModalDialog 和 showModelessDialog
2007/01/22 Javascript
javascript下IE与FF兼容函数收集
2008/09/17 Javascript
JavaScript 监听textarea中按键事件
2009/10/08 Javascript
JavaScript replace(rgExp,fn)正则替换的用法
2010/03/04 Javascript
MVC Ajax Helper或Jquery异步加载部分视图
2015/11/29 Javascript
Jquery和angularjs获取check框选中的值的方法汇总
2016/01/17 Javascript
js+canvas简单绘制圆圈的方法
2016/01/28 Javascript
Js 获取当前函数参数对象的实现代码
2016/06/20 Javascript
1秒50万字!js实现关键词匹配
2016/08/01 Javascript
AngularJS实现一次监听多个值发生的变化
2016/08/31 Javascript
微信开发 使用picker封装省市区三级联动模板
2016/10/28 Javascript
jQuery Chosen通用初始化
2017/03/07 Javascript
vue中如何实现变量和字符串拼接
2017/06/19 Javascript
JavaScript执行环境及作用域链实例分析
2018/08/01 Javascript
JS查找孩子节点简单示例
2019/07/25 Javascript
vue改变循环遍历后的数据实例
2019/11/07 Javascript
vue单文件组件无法获取$refs的问题
2020/06/24 Javascript
[01:05:29]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Aster BO3 第二场 1月24日
2021/03/11 DOTA
Python实现的最近最少使用算法
2015/07/10 Python
浅谈Python中chr、unichr、ord字符函数之间的对比
2016/06/16 Python
Python读取一个目录下所有目录和文件的方法
2016/07/15 Python
解决PyCharm中光标变粗的问题
2017/08/05 Python
使用Python微信库itchat获得好友和群组已撤回的消息
2018/06/24 Python
python查找特定名称文件并按序号、文件名分行打印输出的方法
2020/04/24 Python
css3 按钮样式简单可扩展创建
2013/03/18 HTML / CSS
教师专业理论水平的自我评价分享
2013/11/09 职场文书
运动会广播稿60字
2014/01/15 职场文书
小学作文评语大全
2014/04/21 职场文书
学校党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
简易离婚协议书范本
2014/10/24 职场文书
2015年后勤工作总结范文
2015/04/08 职场文书