bootstrap-table 中columns中editable type为select默认使用本列数据
2017-06-16 14:56
459 查看
当时用bootstrap-table中的columns中editable中的type为select编辑模式下,我们需要必须制定source,然而source方法又没有一应该列数据的function,通过追踪源码以及修改相应的源码,对该方法进行了实现。
说明:其中table1代表的是第一个数据库,table1Relation代表数据库1下面的字段,table2代表的是第二个数据库,table2Relation代表数据库2下面的字段。
现在想将该批数据绑定到bootstrap的table中,其中table1Relation和table1Relation可以作为下拉菜单显示或者可以编辑,如下图所示:
但是当提交的时候,我们发现,bootstrap会将该下拉列表中所有的数据都会传入后台,而无法仅仅将选中数据传递过去。
效果如下:
我们发现其不会将table1Relation和table2Relation下对应的数据绑定到下拉列表中去,通过对源码的追踪,知道了该editable必须需要制定source字段,而默认source是不传递对应列下的数据的。
故对源码进行追踪并修改如下:
在js插件bootstrap-table>extensions>editable>bootstrap-table-editable.js下的$.each(this.columns, function (i, column) 方法(78行左右)下添加下几行代码
最终效果就如下图所示了:
该源码已经放在的GitHub上了https://github.com/huanbia/bootstrap-table,可访问index5.htm来查看
目的
目前有如下的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 x-editable select2——带图标的选择
- bootstrap--table,select2及x-editable的使用小结
- bootstrapTable editable select empty
- Bootstrap-select 无法在 IE8 上使用及解决!
- select2 bootstrap 简单使用
- Table 组件使用指南:修改默认排序规则
- sql:select exclude columns from TABLENAME
- zend_db_table_abstract 中使用 zend_db_select 和join, Join Left
- 在使用jQuery2.1.0和bootstrap2.3.2出现“TypeError: $.browser is undefined”错误的解决方法
- 第六章 使用 Bootstrap Typeahead 组件(百度下拉效果)(续)
- 使用storyboard显示UITableView时,如果不修改系统默认生成的tableView:cellForRowAtIndexPath:方法中的代码,则必须为UITableViewCell注册(填写)重用标识符:identifier.必须要代码方法中的标识符一致.
- Table 组件使用指南之九:修改默认排序规则
- 关于struts使用html:select标签的默认选项
- 使用 Bootstrap Typeahead 组件
- 使用升级版的 Bootstrap typeahead v1.2.2
- 使用bootstrap select2 的下拉框组件时候的一些技巧
- Sql Server 2005 --使用Select * into 时默认值约束名重复时丢失默认值
- 配置 NSSA ABR路由器使用Type-7 LSA通告默认路由
- T-sql get alll columns name and column type from table