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 相关文章推荐
Google排名中的10个最著名的 JavaScript库
Apr 27 Javascript
来自国外的30个基于jquery的Web下拉菜单
Jun 22 Javascript
JS验证控制输入中英文字节长度(input、textarea等)具体实例
Jun 21 Javascript
JavaScript简单实现网页回到顶部功能
Nov 12 Javascript
jquery等待效果示例
May 01 Javascript
Jquery中CSS选择器用法分析
Feb 10 Javascript
jQuery实现仿QQ在线客服效果的滚动层代码
Oct 15 Javascript
jQuery实现为LI列表前3行设置样式的方法【2种方法】
Sep 04 Javascript
基于Vue生产环境部署详解
Sep 15 Javascript
three.js中3D视野的缩放实现代码
Nov 16 Javascript
vue+vuex+axios实现登录、注册页权限拦截
Mar 09 Javascript
bootstrap实现tab选项卡切换
Aug 09 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下检测字符串是否是utf8编码的代码
2008/06/28 PHP
php 全文搜索和替换的实现代码
2008/07/29 PHP
php数据库配置文件一般做法分享
2012/07/07 PHP
一个完整的php文件上传类实例讲解
2015/10/27 PHP
PHP实现的简单异常处理类示例
2017/05/04 PHP
TP3.2批量上传文件或图片 同名冲突问题的解决方法
2017/08/01 PHP
表单切换,用回车键替换Tab健(不支持IE)
2011/07/20 Javascript
Eval and new funciton not the same thing
2012/12/27 Javascript
Node.js模拟浏览器文件上传示例
2014/03/26 Javascript
js获取input长度并根据页面宽度设置其大小及居中对齐
2014/08/22 Javascript
Jquery使用val方法读写value值
2015/05/18 Javascript
AngularJS ng-controller 指令简单实例
2016/08/01 Javascript
JS 在数组指定位置插入/删除数据的方法
2017/01/12 Javascript
react native仿微信PopupWindow效果的实例代码
2017/08/07 Javascript
BootStrap Fileinput插件和Bootstrap table表格插件相结合实现文件上传、预览、提交的导入Excel数据操作步骤
2017/08/07 Javascript
JavaScript模块详解
2017/12/18 Javascript
Vue.js项目中管理每个页面的头部标签的两种方法
2018/06/25 Javascript
微信小程序实现tab页面切换功能
2018/07/13 Javascript
jQuery 实现批量提交表格多行数据的方法
2018/08/09 jQuery
H5+C3+JS实现五子棋游戏(AI篇)
2020/05/28 Javascript
vue自定义指令实现仅支持输入数字和浮点型的示例
2019/10/30 Javascript
[06:33]3.19 DOTA2发布会 海涛、冷冷、2009见证希望
2014/03/21 DOTA
Python简单实现自动删除目录下空文件夹的方法
2017/08/29 Python
Python 关于反射和类的特殊成员方法
2017/09/14 Python
django实现同一个ip十分钟内只能注册一次的实例
2017/11/03 Python
tensorflow更改变量的值实例
2018/07/30 Python
Python如何实现小程序 无限求和平均
2020/02/18 Python
美国最流行的男士时尚网站:Touch of Modern
2018/02/05 全球购物
System.Array.CopyTo()和System.Array.Clone()有什么区别
2016/06/20 面试题
幼儿园数学教学反思
2014/02/02 职场文书
社区道德讲堂实施方案
2014/03/21 职场文书
节能宣传周活动总结
2014/05/08 职场文书
影视广告专业求职信
2014/09/02 职场文书
个人授权委托书模板
2014/09/14 职场文书
医生个人年度总结
2015/02/28 职场文书
pandas:get_dummies()与pd.factorize()的用法及区别说明
2021/05/21 Python