Array(json)没有传入jqGrid的editoptions参数

时间:2011-05-12 18:12:56

标签: javascript jquery jqgrid

我一直在尝试将数组从全局变量(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 .-

4 个答案:

答案 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)

我建议您将dataUrlbuildSelect一起使用,而不是value的{​​{1}}。您可以在the answer的“更新”部分找到editoptions的相应代码示例。

答案 3 :(得分:0)

我尝试了两种方式,并且Olegs链接中的答案有所帮助。使用buildSelect参数可以完全控制值。当我使用value方法时,它分配了0到n的简单整数值。您也可以在此范例中指定自己的CSS类。 buildSelect / dataurl为+1。