Jqgrid动态组合框填充不起作用

Jqgrid dynamic combo box population not working

本文关键字:填充 不起作用 组合 动态 Jqgrid      更新时间:2023-09-26

我正试图在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

hi:)您可以使用Jquery动态地附加到组合框选项,然后将其添加到jqgrid

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

谢谢:)

创建一个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}});
}