最近有个需求就是当你打开datagrid的编辑状态时,要根据行数据的不同对应的combobox的下拉选项也不同。同时为了美观,打开编辑状态的时候combobox为我默认选择数据。我的实现思路是,原有的editor的data不动,重写onBeginEdit方法,在里面获取到要修改的editor,判断rowData的值,当需要修改时再进行操作。废话不多说,具体代码贴上:
onBeginEdit:function(index, rowData){
//统计方法下拉框
var smEditor = $('#FoTable').datagrid('getEditor', {
index : index,
field : 'statisticMethod'
});
$(smEditor.target).combobox({
onLoadSuccess: function () {
$(smEditor.target).combobox('setValue', rowData.statisticMethod);
},
onShowPanel: function(){ //下拉展开时动态修改options
//datatype处理统计方法
if(rowData.dataType == 'string' || rowData.dataType == 'date'){
var data = [];
data.push({'key':'','value':'请选择'},
{'key':'count','value':'计数'},
{'key':'min','value':'最小'},
{'key':'max','value':'最大'},
{'key':'mode','value':'众数'});
$(smEditor.target).combobox("loadData", data);
}
//设置值
$(smEditor.target).combobox('setValue', rowData.statisticMethod);
}
});
//分组排序下拉框
var goEditor = $('#FoTable').datagrid('getEditor', {
index : index,
field : 'groupOrder'
});
$(goEditor.target).combobox({
onLoadSuccess: function () {
$(goEditor.target).combobox('setValue', rowData.groupOrder);
},
onShowPanel: function(){ //下拉展开时动态修改options
//datatype处理统计方法
if(rowData.groupOrder == 0){
var data = [];
data.push({'key':'0','value':'无'},
{'key':'1','value':'升序'},
{'key':'-1','value':'降序'});
$(goEditor.target).combobox("loadData", data);
}
//设置值
$(goEditor.target).combobox('setValue', rowData.groupOrder);
}
});
}