用后加js datagrid根据datagrid列上数据不同加载不同的combobox下拉框并初始化下拉款值
时间: 2024-02-25 11:59:53 浏览: 91
可以通过easyui的datagrid的onBeforeEdit事件和combobox的loadData方法来实现根据不同的列数据加载不同的combobox下拉框,并初始化下拉框的值。具体实现步骤如下:
1. 在HTML中定义datagrid和combobox列,并设置combobox作为该列的编辑器:
```html
<table id="dg" class="easyui-datagrid" data-options="url:'datagrid_data.json',singleSelect:true,fitColumns:true,rownumbers:true,onBeforeEdit:onBeforeEdit">
<thead>
<tr>
<th field="id" width="50">Id</th>
<th field="name" width="50">Name</th>
<th field="category" width="50" editor="{type:'combobox',options:{valueField:'id',textField:'name',onLoadSuccess:loadComboData}}">Category</th>
</tr>
</thead>
</table>
```
2. 在JavaScript中定义combobox的loadComboData方法,该方法用于根据不同的列数据加载不同的combobox选项,并初始化选中值:
```javascript
function loadComboData() {
var opts = $(this).combobox('options');
var url = 'combo_data.json';
var colName = opts.textField;
var rowData = $('#dg').datagrid('getSelected');
if (rowData) {
var colData = rowData[colName];
url += '?category=' + encodeURIComponent(colData);
$(this).combobox('reload', url);
}
}
```
3. 在JavaScript中定义datagrid的onBeforeEdit事件,该事件用于在编辑之前设置combobox的初始值:
```javascript
function onBeforeEdit(index, row) {
var colName = arguments[2];
var ed = $(this).datagrid('getEditor', { index: index, field: colName });
if (ed) {
var opts = $(ed.target).combobox('options');
var colData = row[colName];
var url = 'combo_data.json?category=' + encodeURIComponent(colData);
$.getJSON(url, function (data) {
opts.onLoadSuccess(data);
$(ed.target).combobox('setValue', row[opts.valueField]);
});
}
}
```
上述代码中,onBeforeEdit事件用于在编辑之前设置combobox的初始值,loadComboData方法用于根据不同的列数据加载不同的combobox选项,并初始化选中值。其中,combo_data.json文件中存储了所有的combobox选项列表,根据不同的列数据来动态加载相应的选项列表。
阅读全文