2013-05-21 29 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