最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

Bootstrap Table 在指定列中添加下拉框控件并获取所选值

来源:动视网 责编:小采 时间:2020-11-27 22:33:47
文档

Bootstrap Table 在指定列中添加下拉框控件并获取所选值

Bootstrap Table 在指定列中添加下拉框控件并获取所选值:背景 最近在使用Bootstrap table ,有一个在某一列添加一个下拉列表,并且通过 getAllSelections方法获取所选行的需求,在实现这个功能的时,走了一些弯路,遇到了一些坑。所以今天总结出来,既是自己的学习,也分享给大家,希望能够有些帮助。 如何解决
推荐度:
导读Bootstrap Table 在指定列中添加下拉框控件并获取所选值:背景 最近在使用Bootstrap table ,有一个在某一列添加一个下拉列表,并且通过 getAllSelections方法获取所选行的需求,在实现这个功能的时,走了一些弯路,遇到了一些坑。所以今天总结出来,既是自己的学习,也分享给大家,希望能够有些帮助。 如何解决


背景

最近在使用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 在指定列中添加下拉框控件并获取所选值,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

    文档

    Bootstrap Table 在指定列中添加下拉框控件并获取所选值

    Bootstrap Table 在指定列中添加下拉框控件并获取所选值:背景 最近在使用Bootstrap table ,有一个在某一列添加一个下拉列表,并且通过 getAllSelections方法获取所选行的需求,在实现这个功能的时,走了一些弯路,遇到了一些坑。所以今天总结出来,既是自己的学习,也分享给大家,希望能够有些帮助。 如何解决
    推荐度:
    • 热门焦点

    最新推荐

    猜你喜欢

    热门推荐

    专题
    Top