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 CSS修改学习第二章 样式
Feb 19 Javascript
jQuery选择器源码解读(八):addCombinator函数
Mar 31 Javascript
AngularJS 输入验证详解及实例代码
Jul 28 Javascript
jQuery实现移动端Tab选项卡效果
Mar 15 Javascript
php 修改密码实现代码
May 24 Javascript
React Native中NavigatorIOS组件的简单使用详解
Jan 27 Javascript
解决vue 更改计算属性后select选中值不更改的问题
Mar 02 Javascript
详解VUE 对element-ui中的ElTableColumn扩展
Mar 28 Javascript
webpack里使用jquery.mCustomScrollbar插件的方法
May 30 jQuery
小程序实现多选框功能
Oct 30 Javascript
vue.js实现的全选与全不选功能示例【基于elementui】
Dec 03 Javascript
vue实现随机验证码功能(完整代码)
Dec 10 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脚本并取得参数的方法
2016/01/25 PHP
[原创]php正则删除img标签的方法示例
2017/05/27 PHP
Js的MessageBox
2006/12/03 Javascript
javascript进行数组追加方法小结
2014/06/16 Javascript
jQuery 遍历函数详解
2015/07/05 Javascript
基于jquery实现一个滚动的分步注册向导-附源码
2015/08/26 Javascript
使用impress.js制作幻灯片
2015/09/09 Javascript
jquery判断复选框是否被选中的方法
2015/10/16 Javascript
基于javascript实现图片滑动效果
2016/05/07 Javascript
微信小程序 用户数据解密详细介绍
2017/01/09 Javascript
JS ES6中setTimeout函数的执行上下文示例
2017/04/27 Javascript
vue.js中v-on:textInput无法执行事件问题的解决过程
2017/07/12 Javascript
angular 用Observable实现异步调用的方法
2018/12/27 Javascript
JS使用JSON.parse(),JSON.stringify()实现对对象的深拷贝功能分析
2019/03/06 Javascript
python之模拟鼠标键盘动作具体实现
2013/12/30 Python
python实现排序算法
2014/02/14 Python
Python简单计算数组元素平均值的方法示例
2017/12/26 Python
Python零基础入门学习之输入与输出
2019/04/03 Python
如何利用Python模拟GitHub登录详解
2019/07/15 Python
django 中QuerySet特性功能详解
2019/07/25 Python
python控制台实现tab补全和清屏的例子
2019/08/20 Python
Python使用百度api做人脸对比的方法
2019/08/28 Python
tesserocr与pytesseract模块的使用方法解析
2019/08/30 Python
基于python计算并显示日间、星期客流高峰
2020/05/07 Python
Python实现EM算法实例代码
2020/10/04 Python
Django启动时找不到mysqlclient问题解决方案
2020/11/11 Python
CSS3 media queries + jQuery实现响应式导航
2016/09/30 HTML / CSS
日本著名化妆品零售网站:Cosme Land
2019/03/01 全球购物
美国专业消费电子及摄影器材网站:B&H Photo Video
2019/12/18 全球购物
英国领先的独立酒精饮料零售商:DrinkSupermarket
2021/01/13 全球购物
市场开发与营销专业求职信
2013/12/31 职场文书
法院信息化建设方案
2014/05/21 职场文书
员工工作自我评价
2014/09/26 职场文书
关于教师节的广播稿
2015/08/19 职场文书
2016年“七一建党节”广播稿
2015/12/18 职场文书
委托书范本格式
2019/04/18 职场文书