Jqgrid动态组合框人口不起作用

时间:2012-09-06 12:04:43

标签: javascript jquery ajax jqgrid response

我正在尝试在JQqgrid中动态填充内联组合框。 ajax请求被发送到“dataUrl”参数但是我无法成功地将响应设置到组合框。在从服务器返回响应时,调用了buildSelect函数或我尝试的其他函数。我在下面发布了我的代码,任何人都可以指出为什么buildSelect没有被调用,我无法将动态数据设置到下拉列表。请注意,我也浏览过类似问题的stackoverflow,但没有成功。

            { name: 'hotelId', index:'hotelId',width:30, editable: true, edittype:'select',
              editoptions: { dataUrl:'itemPricingNew!loadRevenueCodes.action' + '?hotelId='+$("#hotelId").val(),
                            value : function (data ){
                                //var response = toObject(data.responseText).response;
                                //return  response.reqRevenueCode;
                                alert("Test22");
                            },
                                buildSelect: function(data) {
                                    alert("Test");
                                },
                                dataInit : function (elem){
                                    alert("Test11");
                                } 
                            }
            },
            /*{ name: 'hotelId', index:'hotelId',width:30, editable: true, edittype:'select',
              editoptions: { value: { 176: 'One', 177: 'Two'} }
            },*/

MilindaD

2 个答案:

答案 0 :(得分:1)

hi :)你可以动态地使用Jquery附加到combobox选项,然后将它添加到jqgrid

http://viralpatel.net/blogs/demo/dynamic-combobox-listbox-dropdown-in-javascript.html

谢谢:)

答案 1 :(得分:0)

创建一个javascript方法,该方法进行ajax调用并获取组合框中所需的所有项目的列表。

var httpDropdown = new XMLHttpRequest();

var finalString;

将字符串存储在全局变量中,并将该字符串用作编辑选项。

function getDropdown() {

    var actionURL = "itemPricingNew!loadRevenueCodes.action";

    httpDropdown.open("POST", actionURL, true);
    httpDropdown.onreadystatechange = parseDropdown;
    httpDropdown.send(null);
} 

function parseDropdown() {

    if (httpDropdown.readyState == 4) {

         var rootElement = httpDropdown.responseXML.documentElement;

         var allChildren = rootElement.childNodes;
         var key;
         var value;

         for(var i=0; i<allChildren.length-1; i++) {

            key = allChildren[i].childNodes[0].childNodes[0].nodeValue;
            value = allChildren[i].childNodes[1].childNodes[0].nodeValue;
            finalString += key+":"+value+";";
            createGrid();
         }
    }
}

首先进行所有处理,然后调用createGrid方法

function createGrid() {

     jQuery("#list1").jqGrid({editoptions: {value: finalString}});
}