我一直在尝试将数组从全局变量(codata
)传递给editoptions
(jqGrid)的选项数组。我的代码如下:
--------- countries_list.php抛出以下json数组-----------
["ABU","AD","AE","AF" .... "ZA","ZM","ZW"]
--------- PHP脚本与jqGrid代码----------
jQuery(document).ready(function(){
var codata = new Array();
$.getJSON('countries_list.php', function(list){
$.each(list, function(val) {
codata.push("'"+val+"'");
# --- Here alert() displays 'codata' with all the elements ---
});
});
$("#datatable").jqGrid({
......
// some code until colMode specs
......
{ name:'guco',
index:'guco',
edittype:'select',
width:90,
editable: true,
editoptions: {
formatter:'select',
value: codata # --- array is not passed, it comes empty ---
},
sortable: true,
resizable: false
},
.....
--------- PHP脚本与jqGrid代码----------
任何提示如何修复此问题?,提前完成。
Mario Benitez .-
答案 0 :(得分:2)
对你们所有人来说很重要,我从你们的贡献中学到了很多东西。问题修复如下:
(阅读)我发现getjson工作的是'异步模式'(我是一个jQuery新手),修复问题的代码是:
jQuery(document).ready(function(){
var codata = (function () {
var list = null;
$.ajax({
'async': false,
'global': false,
'url': 'countries_list.php',
'dataType': 'json',
'success': function (data) {
list = data;
}
});
return list;
})();
$("#datatable").jqGrid({
... jqGrid settings ...
colModel: [
....
{ name:'guco',
index:'guco',
edittype:'select',
width:90,
editable: true,
editoptions: {
value: codata
},
sortable: true,
resizable: false
},
....
再次使用Thanx,我希望这有助于其他人。
Mario Benitez。
答案 1 :(得分:0)
从我看到你的PHP脚本传递有效的js数组,而不是json对象。最合乎逻辑的做法是在ajax回调中调用jqGrid来分配$("#datatable").jqGrid({ ... editoptions: { value: list } ... });
答案 2 :(得分:0)
我建议您将dataUrl
与buildSelect
一起使用,而不是value
的{{1}}。您可以在the answer的“更新”部分找到editoptions
的相应代码示例。
答案 3 :(得分:0)
我尝试了两种方式,并且Olegs链接中的答案有所帮助。使用buildSelect参数可以完全控制值。当我使用value方法时,它分配了0到n的简单整数值。您也可以在此范例中指定自己的CSS类。 buildSelect / dataurl为+1。