2011-08-22 100 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); –