2011-12-05 5 views
2

私はjqGrid 4.2.0を使用します。 - それはフォーム開口 2を充填)TOWN_ID - 私が初めてでフォームを開き、町のリストがない領域を変更すると、選択された領域jqGridはEditFormで選択します

の町を示さなければならない 1)REGION_ID:のEditForm二つ選択があります変更および機能regionOnChangeが呼び出されていません。 しかし、フォームを閉じて地域を変更した後にもう一度「追加」ボタンをクリックすると、町のリストが変わります。

この問題を解決するにはどうすればよいですか。

colModel: [ 
        { name: 'Id', index: 'Id', width: 30, align: 'left', hidden: true, editrules: { edithidden: true} }, 
        { name: 'NAME', index: 'NAME', width: 250, align: 'left', editable: true, editoptions: { size: 64} }, 
       { name: 'REGION_ID', index: 'REGION_ID', hidden: true, edittype: "select", editable: true, editrules: { edithidden: true } 
        , editoptions: { dataUrl: '/Directory/GetRegion?countryId_=0', 
         buildSelect: function(data) { 
          var d = jQuery.parseJSON(data) 
          var s = '<select id="TOWN_ID">'; 
          if (d.length) { 
           $.each(d, function(i) {           
             s += '<option value="' + this.id + '">' + this.name + '</option>'; 
           }); 
          } 
          return s + "</select>"; 
         } 
         } 
        },      
       { name: 'TOWN_ID', index: 'TOWN_ID', hidden: true, edittype: "select", editable: true, editrules: { edithidden: true } 
        , editoptions: { dataUrl: '/Directory/GetTowns?regionId_=62', 
         buildSelect: function(data) { 
          var d = jQuery.parseJSON(data) 
          var s = '<select>'; 
          if (d.length) { 
           $.each(d, function(i) {           
             s += '<option value="' + this.id + '">' + this.name + '</option>'; 
           }); 
          } 
          return s + "</select>"; 
         } 
        } 
       }, 

...

jQuery("#list").jqGrid('navGrid', '#pager', 
      { del: false, add: true, edit: false, search: false, jqModal: true }, //options 
      {},              //edit option 
      {width: 450, jqModal: true, closeAfterAdd: true, afterSubmit: processAddEdit, afterShowForm: processShowForm 
       ,onInitializeForm: onInitFrm },      //add option 
      {},              //del 
      {},              //search 
      {}                            
      ); 

そして、これがTOWNリストは、私はこの行を追加することで、それを固定しているenother REGIONに

function onInitFrm(formid) {  
     $("select").filter("#REGION_ID").change(regionOnChange); 
    } 
    function processShowForm(formid) {   
     $("select").filter("#REGION_ID").change(regionOnChange); 
    } 

    function regionOnChange(reg) { 
     var f = $("select[id='REGION_ID'] option:selected").val(); 
     $("select[id='TOWN_ID'] option").remove(); 
     if (f > 0) { 
      $.getJSON("/Directory/GetTowns", { regionId_: f }, getTown); 
     } 
    } 

    function getTown(tow) { 
     $("select[id='TOWN_ID'] option").remove(); 
     $("select[id='TOWN_ID']").append("<option value=0> </option>"); 

     $.each(tow, function(i) {   
      $("select[id='TOWN_ID']").append("<option value=" + this.id + ">" + this.name + "</option>"); 
     }); 
    } 

答えて

0

を選択した後にどのように変化しているかのコードです:, dataEvents: [{ type: 'change', fn: regionOnChange}] へeditoptions。 ))

関連する問題