$(this).datagrid("beginEdit", index); var temp; var url = "/manage/platform/commodity/baseCommodityModelCp/getConfigInfoList?commodityId="+rows[index].commodityId $.ajax({ url:url, async:false, //同步请求 dataType:"json", success:function(data){ temp = data; } }); var configTarget= $(this).datagrid("getEditor",{index:index,field:"commodityConfig"}).target configTarget.combobox('loadData',temp); $(this).datagrid("endEdit", index);
时间: 2024-02-25 21:59:43 浏览: 74
支持beforeEdit的edatagrid
5星 · 资源好评率100%
根据你提供的代码,我可以看到下拉框无法加载数据的原因。在beginEdit和endEdit之间,你使用了异步的ajax请求去获取数据,但是你没有等到ajax请求完成就立即使用temp去加载下拉框的数据源。因此,temp可能是空的或者未能正确地获取到数据。这就导致了关闭editor后,下拉框中无法显示任何值。
为了解决这个问题,你可以将异步请求改为同步请求,或者在ajax请求完成后再去加载下拉框的数据源。以下是一个可能的解决方案:
```
$(this).datagrid("beginEdit", index);
var url = "/manage/platform/commodity/baseCommodityModelCp/getConfigInfoList?commodityId="+rows[index].commodityId;
$.ajax({
url: url,
async: false, //同步请求
dataType: "json",
success: function(data){
var configTarget= $(this).datagrid("getEditor",{index:index,field:"commodityConfig"}).target;
configTarget.combobox('loadData', data);
}
});
$(this).datagrid("endEdit", index);
```
在这个解决方案中,我将ajax请求放在了success回调函数中,以确保在获取数据后再去加载下拉框的数据源。同时,我也删除了temp变量,因为它不再需要了。
阅读全文