下拉框使用问题集锦
本帖最后由 Ellia.Duan 于 2023-12-29 11:20 编辑SpreadJS目前提供了四种方式去使用下拉框,可以参考这篇文章:
https://gcdn.grapecity.com.cn/showtopic-169429-1-1.html
了解到如何创建下拉框之后,下面总结下下拉框一些使用场景与问题
1、ComboBox自适应下拉框内容
有时候用户发现下拉框内容过长,而列宽不够时,出现遮挡情况。
所以希望可以自适应换行。
var data = {
items: [
{
text: 'Orange Orange Orange Orange Orange Orange Orange Orange Orange Orange Orange ',
value: 'Orange Orange Orange Orange Orange Orange Orange Orange Orange Orange Orange '
},
{
text: 'Apple',
value: 'Apple',
},
{
text: 'Banana',
value: 'Banana'
}
]
};
var style = new GC.Spread.Sheets.Style();
style.wordWrap = true;
style.cellButtons = [
{
imageType: GC.Spread.Sheets.ButtonImageType.dropdown,
command: "openList",
useButtonStyle: true,
}
];
style.dropDowns = [
{
type: GC.Spread.Sheets.DropDownType.list,
option: data
}
];
sheet.setStyle(3, 4, style);
执行上述代码后,发现第一项内容过长,如果选中第一项,则出现内容不完整情况,如下图
此时我们可以在ValueChanged事件中,对此行进行高度自适应,如下代码
sheet.bind(GC.Spread.Sheets.Events.ValueChanged, function (e, info) {
info.sheet.autoFitRow(info.row)
});
执行后,刷新页面,此时再选中第一项,执行效果如下:
2、ComboBox下拉框数据从后端获取,
有时候用户希望下拉框数据可以异步获取,通过http请求获取下拉框数据资源。
此时可以使用如下代码来实现:
const combo = new spreadNS.CellTypes.ComboBox();
combo
.editorValueType(spreadNS.CellTypes.EditorValueType.text);
sheet.setValue(0, 3, "Result:");
sheet.getCell(1, 2, spreadNS.SheetArea.viewport).cellType(combo);
sheet.bind(GC.Spread.Sheets.Events.EditStarting, function (sender, args) {
const {row, col} = args;
if (row == 1 && col == 2) {
let arr = [];
$.ajax(
{
async: false, url: "http://127.0.0.1:3000/list", success: function (result) {
result.map(select => {
arr.push( {
text: select.name,
value: select.id,
})
})
console.log(result);
combo.items(arr);
}
});
}
});
3、ComboBox下拉框允许修改,且修改后变为下拉框值的一部分
const combo = new spreadNS.CellTypes.ComboBox();
combo
.editorValueType(spreadNS.CellTypes.EditorValueType.text);
combo.editable(true);
combo.items([{text: 'orange', value: 'orange'}])
sheet.setValue(0, 3, "Result:");
sheet.getCell(1, 2, spreadNS.SheetArea.viewport).cellType(combo);
sheet.bind(GC.Spread.Sheets.Events.ValueChanged, function (e, info) {
const row = info.row, col = info.col;
let currentValue = sheet.getValue(row, col)
var cellType = sheet.getCellType(row, col);
var items = cellType.items();
if (cellType instanceof GC.Spread.Sheets.CellTypes.ComboBox) {
if (items.length > 0) {
let result = false;
items.forEach(item => {if (item.text == currentValue) result = true;});
if (!result) {
items.push({text: currentValue, value: items})
}
} else {
items.push({text: currentValue, value: items})
}
}
});
4、下拉框模糊搜索
https://gcdn.grapecity.com.cn/showtopic-131931-1-1.html
5、下拉框 根据值绑定,修改对应区域的值
https://gcdn.grapecity.com.cn/fo ... 5680&extra=page%3D2
6、ComboBox设置背景色
有用户发现为单元格设置背景色如黄色,随之下拉框也出现黄色,如下图所示:
此时如果不希望下拉组件保持原来的白色背景,可以加这么几行代码:
div{
background-color: white !important;
}
7、List 修改样式
可以参考这篇文章:https://gcdn.grapecity.com.cn/showtopic-139216-1-19.html
页:
[1]