0

我正在尝试在 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'} }
            },*/

米林达

4

2 回答 2

1

嗨 :) 您可以通过使用 Jquery 将其附加到组合框选项来动态执行此操作,然后将其添加到 jqgrid

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

谢谢 :)

于 2013-01-23T10:44:30.730 回答
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}});
}
于 2012-09-06T12:15:54.917 回答