2011-08-22 98 views
0

我需要使用jqgrid加載依賴的下拉列表。這裏是我的代碼部分(我使用MVC)從屬下拉列表jqgrid

{ name: 'parIDUnidadMedida', index: 'parIDUnidadMedida', width: 80, align: 'center', editable: true, edittype: "select", 
        editrules: { required: true }, 
        editoptions: { 
         multiple: false, 
         size: 1, 
         dataUrl: '@Url.Content("~/")' + 'CertificadoGarantiaExtendidaOpciones/ListarUnidadesMedida/', 
         buildSelect: function (data) { 
          var response = jQuery.parseJSON(data); 
          var s = '<select>'; 
          if (response && response.length) { 
           for (var i = 0, l = response.length; i < l; i++) { 
            var ri = response[i]; 
            s += '<option value="' + ri.Value + '">' + ri.Text + '</option>'; 
           } 
          } 
          return s + "</select>"; 
         }, 
         dataEvents: [{ 
          type: 'change', 
          fn: function (e) { 
           var varIDUnidadMedida = e.currentTarget.value; 
           newOptions = ''; 
           var arrPlazos = $.ajax({ 
            url: '@Url.Content("~/")' + 'CertificadoGarantiaExtendidaOpciones/ListarPlazos/' + varIDUnidadMedida, 
            async: false 
           }).responseText; 

           var response = jQuery.parseJSON(arrPlazos); 
           for (var i = 0; i < response.length; i++) { 
            newOptions += '<option value="' + response[i].Value + '">' + response[i].Text + '</option>'; 
           } 

           $('parPlazo').html(newOptions); 
          } 
         }] 
        } 
       }, 
       { name: 'parPlazo', index: 'parPlazo', width: 80, align: 'center', editable: true, edittype: "select", 
        editrules: { required: true }, 
        editoptions: { 
         multiple: false, 
         size: 1 
        } 
       }, 

正如你可以看到,如果parIDUnidadMedida選擇控制的變化則parPlazo必須更新...

你能幫助我嗎?我不知道如何解決它。

問候。

回答

0

好的......找到答案後我得到了它.. 你看我做了一些小的修復,但主要原因,因爲它沒有工作是因爲我從來沒有加載第二個dropdownlist(parPlazo) 。所以選擇parPlazo沒有ID或名稱。顯然它coudl永遠不會達成

這是代碼。我希望這可以幫助你。 問候

{ name: 'parIDUnidadMedida', index: 'parIDUnidadMedida', width: 80, align: 'center', editable: true, edittype: "select", 
        editrules: { required: true }, 
        editoptions: { 
         multiple: false, 
         size: 1, 
         dataUrl: '@Url.Content("~/")' + 'CertificadoGarantiaExtendidaOpciones/ListarUnidadesMedida/', 
         buildSelect: function (data) { 
          var response = jQuery.parseJSON(data); 
          var s = '<select>'; 
          if (response && response.length) { 
           for (var i = 0, l = response.length; i < l; i++) { 
            var ri = response[i]; 
            s += '<option value="' + ri.Value + '">' + ri.Text + '</option>'; 
           } 
          } 
          return s + "</select>"; 
         }, 
         dataEvents: [{ 
          type: 'change', 
          fn: function (e) { 
           var varIDUnidadMedida = e.currentTarget.value; 
           $.ajax({ 
            url: '@Url.Content("~/")' + 'CertificadoGarantiaExtendidaOpciones/ListarPlazos/' + varIDUnidadMedida, 
            type: 'GET', 
            success: function (PlazosJson) { 
             var plazos = eval(PlazosJson); 
             var plazosHtml = ""; 
             $(plazos).each(function (i, option) { 
              plazosHtml += '<option value="' + option.Value + '">' + option.Text + '</option>'; 
             }); 

             // Poblar los datos 
             if ($(e.target).is('.FormElement')) { 
              // En caso de se formulario de edicion, añadir 
              var form = $(e.target).closest('form.FormGrid'); 
              $("select#parPlazo.FormElement", form[0]).html(plazosHtml); 
             } else { 
              // Edicion de una linea 
              var row = $(e.target).closest('tr.jqgrow'); 
              var rowId = row.attr('id'); 
              var rowId = jQuery("#grid").jqGrid('getGridParam', 'selrow'); 
              jQuery("select#" + rowId + "_parPlazo").append(plazosHtml); 
             } 
            } 
           }); 
          } 
         }] 
        } 
       }, 
       { name: 'parPlazo', index: 'parPlazo', width: 80, align: 'center', editable: true, edittype: "select", 
        editrules: { required: true }, 
        editoptions: { 
         multiple: false, 
         size: 1, 
         dataUrl: '@Url.Content("~/")' + 'CertificadoGarantiaExtendidaOpciones/ListarPlazos/1', 
         buildSelect: function (data) { 
          var response = jQuery.parseJSON(data); 
          var s = '<select>'; 
          if (response && response.length) { 
           for (var i = 0, l = response.length; i < l; i++) { 
            var ri = response[i]; 
            s += '<option value="' + ri.Value + '">' + ri.Text + '</option>'; 
           } 
          } 
          return s + "</select>"; 
         } 
        } 
       }, 
+0

本LIK幫我.... http://www.trirand.net/aspnetmvc/grid/editdialogdependentdropdowns –

+0

我發現別的做..... 更換(添加新代碼行) jQuery(「select#」+ rowId +「_parPlazo」)。append(plazosHtml); (「select#」+ rowId +「_parPlazo> option」)。remove(plazosHtml);}} jQuery(「select#」+ rowId +「_parPlazo」)。append(plazosHtml); –