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 相关文章推荐
Prototype使用指南之selector.js
Jan 10 Javascript
jquery插件如何使用 jQuery操作Cookie插件使用介绍
Dec 15 Javascript
ajax请求get与post的区别总结
Nov 04 Javascript
JS判断表单输入是否为空(示例代码)
Dec 23 Javascript
javascript基础语法学习笔记
Jan 04 Javascript
jQuery Ajax File Upload实例源码
Dec 12 Javascript
js 颜色选择插件
Jan 23 Javascript
使用ES6语法重构React代码详解
May 09 Javascript
Js中将Long转换成日期格式的实现方法
Jun 05 Javascript
vue 项目中使用Loading组件的示例代码
Aug 31 Javascript
vue回到顶部监听滚动事件详解
Aug 02 Javascript
了不起的11个JavaScript代码重构最佳实践小结
Jan 11 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
星际玩家的三大定律
2020/03/04 星际争霸
PHP array操作10个小技巧分享
2011/06/23 PHP
php验证手机号码(支持归属地查询及编码为UTF8)
2013/02/01 PHP
php常用的url处理函数总结
2014/11/19 PHP
php操作(删除,提取,增加)zip文件方法详解
2015/03/12 PHP
ko knockoutjs动态属性绑定技巧应用
2012/11/14 Javascript
js分页代码分享
2014/04/28 Javascript
document.forms用法示例介绍
2014/06/26 Javascript
jQuery对val和atrr(&quot;value&quot;)赋值的区别介绍
2014/09/26 Javascript
javascript实现行拖动的方法
2015/05/27 Javascript
js基础知识(公有方法、私有方法、特权方法)
2015/11/06 Javascript
jQuery.ajax 跨域请求webapi设置headers的解决方案
2016/08/08 Javascript
浅谈JS中的三种字符串连接方式及其性能比较
2016/09/02 Javascript
jQuery基于ajax实现页面加载后检查用户登录状态的方法
2017/02/10 Javascript
JS异步执行结果获取的3种解决方式
2019/02/19 Javascript
JS实现移动端可折叠导航菜单(现代都市风)
2020/07/07 Javascript
js实现页面导航层级指示效果
2020/08/25 Javascript
[01:50]WODOTA制作 DOTA2中文宣传片《HERO》
2013/04/28 DOTA
Tensorflow 查看变量的值方法
2018/06/14 Python
python selenium执行所有测试用例并生成报告的方法
2019/02/13 Python
Python autoescape标签用法解析
2020/01/17 Python
django执行数据库查询之后实现返回的结果集转json
2020/03/31 Python
localStorage的过期时间设置的方法详解
2018/11/26 HTML / CSS
加拿大最大的五金、家居装修和园艺产品商店:RONA
2017/01/27 全球购物
男女时尚与复古风格在线购物:RoseGal(全球免费送货)
2017/07/19 全球购物
AssertionError 跟一下那个类是 “is – a”的关系
2012/02/21 面试题
教师业务学习制度
2014/01/25 职场文书
旅游个人求职信范文
2014/01/30 职场文书
酒店仓管员岗位职责
2014/04/28 职场文书
教育基金募捐倡议书
2014/05/14 职场文书
小学教师岗位职责
2015/04/02 职场文书
电影小兵张嘎观后感
2015/06/03 职场文书
初中政治教学工作总结
2015/08/13 职场文书
青年岗位能手事迹材料(2016推荐版)
2016/03/01 职场文书
2016年万圣节活动总结
2016/04/05 职场文书
SQL注入篇学习之盲注/宽字节注入
2022/03/03 MySQL