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'} }
            },*/

ミリンダD

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

ajax 呼び出しを行い、コンボ ボックスで必要なすべての項目のリストを取得する JavaScript メソッドを作成します。

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 に答える