2013-05-21 59 views
0

我試着去工作的形式編輯,自動完成。它的來源是不同的,每次用戶打開編輯表單動態本地源的jqGrid自動完成

當打開編輯表單:

beforeShowForm: function(frm) { 
    var id = grid.jqGrid('getGridParam','selrow'); 
    if (id) { 
     var ret = grid.jqGrid('getRowData',id); 
     AccCode = ret.szAccCode; 
    }; 
    $.post("url_getchildren", { szAccCode: AccCode}). 
     done(function(data) { 
       lschildcode=data; 
     }); 
}, 

我設法從結果服務器, 但我不能發送到網格。

colModel

{name:'szAccParentCode',index:'szAccParentCode', editable:true, edittype:'text', 
    editoptions : { 
     dataInit: function(elem){ 
      $(elem).focus(function(){ 
       this.select(); 
      }), 
      $(elem).autocomplete({ 
       source:lschildcode 
      }) 
     } 
    } 
}, 

爲什麼我不能傳遞lschildcode自動完成的源代碼?並且每次我輸入框時,自動完成都會向服務器發送期限。

TIA

回答

0

我認爲dataInit(等autocomplete)將的$.postdone將被執行之前被調用

要解決,你可以如通話$("#szAccParentCode").autocomplete({source:lschildcode})done內的問題。

另一種方式:可以使用URL作爲source值。該URL可以包含一些額外的參數。如果您需要使用HTTP POST你可以聲明source的功能和調用success或您source實施doneresponse參數(回調函數)。只要看看的source的實施the remote with caching例子並檢查代碼(點擊「查看源文件」),或檢查附近$.ajax使用jQuery用戶界面自動完成(見here)的源代碼。

+0

非常感謝@Oleg ...我做了它的功能(數據){(「#szAccParentCode」)。autocomplete({source:JSON.parse(data)}); }裏面$ .post – aramadhani

+0

順便說一句,當我點擊編輯表單中的next/prev記錄時,源文件沒有改變..任何建議我應該在哪裏放這個函數? – aramadhani