javascript - 在可编辑数据网格中使用 optgroup 组合框
问题描述
如何在没有 html 的情况下通过可编辑的数据网格来实现它?
<optgroup label="Swedish Cars">
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
</optgroup>
<optgroup label="German Cars">
<option value="mercedes">Mercedes</option>
<option value="audi">Audi</option>
</optgroup>
我在下面尝试过:
<table id="bulkchannel_edit" title='Editable DataGrid' singleSelect="true" style="width:100%; height:500px;">
<thead>
<tr>
<th field="channel_name" width="100" editor="{type:'textbox'}">Channel Name</th>
<th field="category_name" width="100" editor="{type:'combobox',
options:{
valueField:'channel_category_id',
textField:'category_name',
data:childCategories,
groupField:parentCategories,
required:true
}
}" formatter="getSelectedCategory">Category</th>
</tr>
</thead>
</table>
来自以下 ajax 请求的两个组 optgroup 的数据:
var parentCategories = {};
var childCategories = {};
$(document).ready(function(){
$.ajax({
url: "<?php echo base_url() ?>index.php/Channels/getParentChildChannelCategories",
dataType: 'json',
async : false,
success: function(response){
console.log('response',response);
console.log('parent_categories',response.parent_categories);
parentCategories = response.parent_categories;
childCategories = response.child_categories;
}
});
});
我必须加载父组中的父类别和 optgroup html 中的所有子类别
谢谢。
解决方案
var data = [
{group:'Group1',items:[
{value:'v11',text:'Option11'},
{value:'v12',text:'Option12'},
{value:'v13',text:'Option13'},
{value:'v14',text:'Option14'}
]},
{group:'Group2',items:[
{value:'v21',text:'Option21'},
{value:'v22',text:'Option22'},
{value:'v23',text:'Option23'},
{value:'v24',text:'Option24'}
]}
];
function loadFilter(data){
var dd = [];
for(var i=0; i<data.length; i++){
var group = data[i].group;
dd.push({
group:group,
text:group
});
dd = dd.concat(data[i].items);
}
return dd;
}
function onLoadSuccess(){
var groupItems = $(this).combobox('panel').find('div.combobox-
item:has(span.combobox-group-text)');
groupItems.removeClass('combobox-item');
}
function formatter(row){
if (row.group){
return '<span class="combobox-group-text" style="font-weight:bold">'+row.group+'</span>';
} else {
return '<span style="padding-left:10px">'+row.text+'</span>';
}
}
$(function(){
$('#cc').combobox({
data:data,
loadFilter:loadFilter,
formatter:formatter,
onLoadSuccess:onLoadSuccess
});
});
推荐阅读
- python - 从python中的文本中提取数字字符串
- javascript - Cypress + Vuetify 复选框未识别
- scala - 如何在 spark graphx 中使用 pregel 处理分层数据时仅指定一个根(如果数据中存在多个根)
- c# - AMO OLAP 查询绑定
- python-3.x - 如何让导演使用 IMBdPY 作为列表?
- java - 如何在android中获取实际时间和日期?
- python - 如何在 Firefox 或 Chrome 中使用 Selenium webdriver 更改屏幕截图的目标目录
- javascript - Angular6:控制应用程序内部的数据共享
- angularjs - kendogrid 自定义验证消息和样式
- javascript - 使具有形状响应的画布