jquery-select2-4 - 制表符和 Select2,在加载时不显示选择值
问题描述
我想在 Tabulator 中使用 Select2 但触发所选值不起作用。
这是我的表格列格式化程序代码:
{
title: "Select2", field: "lucky_no", align: "center", width: 300, editor: true,
formatter: function (cell, formatterParams, onRendered) {
onRendered(function () {
var select_2 = $(cell.getElement());
select_2.select2({
theme: "classic",
placeholder: 'Select',
data: list,
minimumResultsForSearch: Infinity,
width: 300,
minimumInputLength: 0,
allowClear: true,
}).on('change', function (e) {
console.log('change');
});
select_2.val(list[cell.getValue()].id);
var x = select_2.val();
select_2.val(x).trigger('change');
})
}
},
我添加了一个工作示例。
触发所选值在表格上方的下拉菜单中起作用。尽管在表格中触发了更改事件,但它不会在下拉列表中显示所选值。
谢谢,
广告
解决方案
如果您试图使该字段可编辑,您应该创建一个自定义编辑器而不是格式化程序
格式化程序用于向用户显示数据,编辑器用于允许用户编辑数据。
内置选择编辑器
在我深入这个示例之前,您是否知道 Tabulator 已经内置了一个选择编辑器以使您的生活更加轻松,在文档中的演示中,查看性别列以查看它的实际效果。
自定义编辑器
使用自定义编辑器时,它们带有选择和取消回调,允许您将数据传递回表中。
因此,对于您的示例,它应该看起来像这样(此代码未经测试)
//create custom editor
var select2Editor = function(cell, onRendered, success, cancel, editorParams){
//create input element to hold select
var editor = document.createElement("input");
onRendered(function(){
var select_2 = $(editor);
select_2.select2({
theme: "classic",
placeholder: 'Select',
data: list,
minimumResultsForSearch: Infinity,
width: 300,
minimumInputLength: 0,
allowClear: true,
});
select_2.on('change', function (e) {
success(select_2.val());
});
select_2.on('blur', function (e) {
cancel();
});
});
//add editor to cell
return editor;
}
//in your column definition for the column
{title: "Select2", field: "lucky_no", align: "center", width: 300, editor: select2Editor},
推荐阅读
- node.js - 如何在发送前查找电子邮件大小
- java - 在定义新的类实例时重复命名的类有什么意义?
- vue.js - 如何访问嵌套的 vue.js 组件的值?
- java - JAVA:初始化对象类
- php - 我的数据表未固定到页面 如何在整个页面中显示我的表?
- vue.js - 带有 v-model 的 VueJS 输入会破坏用户输入
- django-rest-framework - 如何在 drf-aysg swagger web UI 中显示棉花糖 sheme 作为 request_body 的示例
- elasticsearch - 通过 Elasticsearch 中的索引位置获取文档
- reactjs - 鸽子地图标记问题
- angular - 即使连接到数据源,如何强制分页器长度?