Jquery 即使使用dataUrl从服务器资源定义返回响应,也未调用Jqgrid buildselect函数

Jquery 即使使用dataUrl从服务器资源定义返回响应,也未调用Jqgrid buildselect函数,jquery,jqgrid,Jquery,Jqgrid,我正在尝试在用于搜索目的的jqgrid中填充我的自定义选择元素。我正在使用ajaxselectoptions、dataurl和buildselect构建我的自定义选择元素。使用以下代码 ajaxSelectOptions: { method: 'GET', dataType: 'json', success:function(response){ consol

我正在尝试在用于搜索目的的jqgrid中填充我的自定义选择元素。我正在使用ajaxselectoptions、dataurl和buildselect构建我的自定义选择元素。使用以下代码

 ajaxSelectOptions: {
                method: 'GET',
                dataType: 'json',
                success:function(response){
                    console.log("getGenders",response);
                }
            },

-- the below code is a part of colmodel option

            name: 'empGender',
            editable: true,
            edittype:'select',
            formatter:'select',
            editoptions:{value:":All;M:Male;F:Female"},
            stype: 'select',
            search: true,
            searchoptions: {
                dataUrl: './getGenders',
                buildSelect: function(data) {
                    console.log(data);
                    var ele = '<select>';
                    $.each(data, function(index, object) {
                        ele+='<option value='+object.id+'>'+object.value+'</option>';
                    });
                    ele=ele+'</select>';
                    //console.log(ele);
                    return ele;
                }
            }
我的success函数正在控制台中执行并打印预期的输出。但在这之后,当我尝试使用搜索选项下的buildselect函数构建我的select元素时,它不会发生,因为它根本不会执行。
有人能帮忙吗?提前谢谢。

您遇到的问题是ajaxSelectOptions的定义。在这个对象中,您定义了覆盖jqGrid中成功函数的成功函数。为了使代码正常工作,应该在ajaxSeletOptions中删除此事件

ajaxSelectOptions: {
            method: 'GET',
            dataType: 'json'
        },
-- the below code is a part of colmodel option

        name: 'empGender',
        editable: true,
        edittype:'select',
        formatter:'select',
        editoptions:{value:":All;M:Male;F:Female"},
        stype: 'select',
        search: true,
        searchoptions: {
            dataUrl: './getGenders',
            buildSelect: function(data) {
                console.log(data);
                var ele = '<select>';
                $.each(data, function(index, object) {
                    ele+='<option value='+object.id+'>'+object.value+'</option>';
                });
                ele=ele+'</select>';
                //console.log(ele);
                return ele;
            }
        }

使用哪个版本的jqGrid-Guriddo jqGrid,free jqGrid或jqGrid@TonyTomov谢谢你的回复,是的,使用的版本是4.6,这就是它无法渲染元素的原因。应该使用哪个最低版本来启用此功能?有人能帮我吗?提前谢谢,我有点困惑。您的意思是,由于我在ajaxselectoptions中定义了success函数,它将覆盖该特定列的搜索选项下的builtselect函数吗?因为当对服务器的请求成功时,jqgrid中没有执行成功事件。如果请求成功,则执行Load complete,如果请求不成功,则执行Load error。它不会覆盖buildselect,而是通过dataUrl覆盖jqgrid中执行的ajax成功函数。dataUrl意味着jqgrid中有ajax,从何处获取BuildSelectActual buildSelect在尝试动态构建select时在ajax调用的成功函数中定义,并且由于它被ajaxSelectOptions覆盖,因此不会执行