bootstrap-table 中columns中editable type为select默认使用本列数据
来源:互联网 发布:装修设计实用软件 编辑:程序博客网 时间:2024/05/18 03:53
当时用bootstrap-table中的columns中editable中的type为select编辑模式下,我们需要必须制定source,然而source方法又没有一应该列数据的function,通过追踪源码以及修改相应的源码,对该方法进行了实现。
目的
目前有如下的json需要绑定到bootstrap的table中
{ "id": k, "table1": 数据库2, "table1Relation": ["banana", "peach"], "table2": 数据库3, "table2Relation": ["d", "e", "f"] }
说明:其中table1代表的是第一个数据库,table1Relation代表数据库1下面的字段,table2代表的是第二个数据库,table2Relation代表数据库2下面的字段。
现在想将该批数据绑定到bootstrap的table中,其中table1Relation和table1Relation可以作为下拉菜单显示或者可以编辑,如下图所示:
遇到的问题
使用formatter
最初想要通过columns下的formatter绑定function(value,row,index)来创建下拉列表进行处理,代码如下:
var formatFunc = function(value,row,index){ var result = "<select data-tags=\"true\" data-placeholder=\"Select an option\" class=\"selectpicker show-tick form-control\" data-live-search=\"false\">" for(var i=0;i<value.length;i++){ result += " <option value=\""+value[i]+"\">"+value[i]+"</option>"; } result += "</select>"; return result}$("#tableRelation").bootstrapTable({ data: resultList, uniqueId: "id", columns: [[ { title: "表1", field: "table1" }, { title: "关联字段", field: "table1Relation", formatter: formatFunc }, { title: "表2", field: "table2" }, { title: "对应字段", field: "table2Relation", formatter: formatFunc }, { title: "操作", formatter: function (value, row, index) { return "<a href='javascript:;' class='btn btn-default' onclick=\"$('#tableRelation').bootstrapTable('removeByUniqueId', " + row.id + ")\">不进行关联</a>" } } ]] });
但是当提交的时候,我们发现,bootstrap会将该下拉列表中所有的数据都会传入后台,而无法仅仅将选中数据传递过去。
使用editable
当使用editable的时候,其代码改为如下:
$("#tableRelation").bootstrapTable({ data: resultList, uniqueId: "id", columns: [[ { title: "表1", field: "table1" }, { title: "关联字段", field: "table1Relation", editable: { type:"select" } }, { title: "表2", field: "table2" }, { title: "对应字段", field: "table2Relation", editable: { type: "select" } }, { title: "操作", formatter: function (value, row, index) { return "<a href='javascript:;' class='btn btn-default' onclick=\"$('#tableRelation').bootstrapTable('removeByUniqueId', " + row.id + ")\">不进行关联</a>" } } ]]});
效果如下:
我们发现其不会将table1Relation和table2Relation下对应的数据绑定到下拉列表中去,通过对源码的追踪,知道了该editable必须需要制定source字段,而默认source是不传递对应列下的数据的。
故对源码进行追踪并修改如下:
在js插件bootstrap-table>extensions>editable>bootstrap-table-editable.js下的$.each(this.columns, function (i, column) 方法(78行左右)下添加下几行代码
if (column.editable.type == "select" && column.editable.source == null) { column.editable.source = that.getData()[0][column.field]}
最终效果就如下图所示了:
该源码已经放在的GitHub上了https://github.com/huanbia/bootstrap-table,可访问index5.htm来查看
- bootstrap-table 中columns中editable type为select默认使用本列数据
- bootstrap-table-editable 小结
- 十五、bootstrap-table editable
- bootstrap--table,select2及x-editable的使用小结
- bootstrap 点击table中某一列,弹出模态框
- 关于bootstrap中table的表格固定列
- DB2 查看table中所有的columns
- 在bootstrap table中使用Tooltip
- bootstarpTable中有关editable的使用
- Boostrap-table.js的表格数据可视化 集成bootstrap-editable.js
- jquery-editable-select设置显示默认选项
- bootstrap table 中自定义样式
- SilverLight中为GridView添加默认数据
- bootstrap table实现x-editable的行单元格编辑及解决数据Empty和支持多样式
- bootstrap table datailView使用中遇到的问题
- bootstrap jquery table 使用中遇到的问题
- editable select
- mysql中列信息查询(information_schema.columns )
- hdoj 1800 (Flying to the Mars)
- MySQL关于查询条件中:字符串类型的值忽略英文字母的大小写以及字符串尾部包含空格的问题
- css3样式效果
- 截取屏幕(考虑分辨率适配)
- java验证码工具类(自己编写的,仅供参考)
- bootstrap-table 中columns中editable type为select默认使用本列数据
- 【Linux】命令
- python 安装PyV8 和 lxml
- Apache shiro集群实现 (一) shiro入门介绍
- hdoj 1846
- 编写自己的javascript框架
- 面试题28:字符串的排列
- ajax 设置Access-Control-Allow-Origin实现跨域访问
- 获取UIAlertController中textField的值