2012-09-06 58 views
0

我想動態地填充JQqgrid中的內聯組合框。 ajax請求被髮送到「dataUrl」參數,但我無法成功地將響應設置到組合框。從服務器返回響應時,不會調用buildSelect函數或我嘗試過的其他函數。我在下面發佈了我的代碼,任何人都可以指出爲什麼buildSelect沒有被調用,我無法將動態數據設置到下拉列表中。請注意,我也瀏覽過類似問題的stackoverflow,但沒有成功。Jqgrid動態組合框人口不工作

  { 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

回答

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}}); 
} 
+0

嗨,而這是一個部分解決。在編輯行時或者在選擇當前組合框列表時需要填充另一個組合框時,如何讓動態加載數據成爲可能。 – MilindaD