none
Filtragem de listbox através da informação de um dropdownlist RRS feed

  • Pergunta

  • Olá pessoal!! 

    Estou tentando fazer o seguinte: filtrar a informação de uma listbox de localidades dependendo do que o usuário informar em um dropdownlist de municípios. Eu segui o passo-a-passo do seguinte site (porém no meu caso são apenas um dropdown e um listbox, e não três): 

    Simple Implementation os MVC Cascading

    Meu código ficou assim: 

    - Criei um actionResult no meu Controller. 

     [HttpPost]
            public ActionResult SelectMunicipio(int? selectedMUNICIPIO, SINCO_LOCALIDADE_CONCESSAO sinco_localidade_concessao, SINCO_CONCESSAO sinco_concessao)
            {
                            
                ViewBag.IDMUNICIPIO = new SelectList(db.MUNICIPIOS_VIEW, "ID_MUNICIPIO", "NOME_MUNICIPIO", sinco_concessao.IDMUNICIPIO);
    
                ViewBag.IDLOCALIDADE = new SelectList(db.LOCALIDADES_VIEW, "ID_LOCALIDADE", "NOME_LOCALIDADE", sinco_localidade_concessao.IDLOCALIDADE);
    
                if (selectedMUNICIPIO.HasValue)
                {
                    ViewBag.IDLOCALIDADE = (from s in db.LOCALIDADES_VIEW
                                            where s.ID_MUNICIPIO == selectedMUNICIPIO
                                            orderby s.NOME_LOCALIDADE
                                            select s);
                   
                }
                return PartialView("LocalidadesList", sinco_concessao);
            }


    - Criei duas partial Views, uma para o Munícipio e outra para Localidades. 

    <%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<SINCO_MVC.Models.SINCO_CONCESSAO>" %>
      
    <script type="text/javascript">
             $(function () {
              $("#selectedMUNICIPIO").change(function () {
                  $(this).parents('form').submit();
              });
          });
    
        </script>
    
            <div class="editor-label">
                <%: Html.LabelFor(model => model.IDMUNICIPIO) %>
            </div>
            <div class="editor-field">
            <% using (Ajax.BeginForm("SelectMunicipio", "ConcessaoController", new AjaxOptions { UpdateTargetId = "Localidades"}))
           { %>
                <%: Html.DropDownList("IDMUNICIPIO", String.Empty) %>
            </div>
    
    <% 
       }
          Scripts.Render("~/bundles/jqueryval");
    %>


    <%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<SINCO_MVC.Models.SINCO_CONCESSAO>" %>
    
        <div class="editor-label" style="font-weight: bold">
               Localidades:
            </div>
          
             <div class="editor-field">
         
                    <%: Html.ListBox("IDLOCALIDADE", null, new { id = "IDLOCALIDADE", size = "10" })%>
            </div>
    
    <% 
          Scripts.Render("~/bundles/jqueryval");
    %>

    - Chamada das Parital Views.

      <div class="editor-field" id="Municipios">
         
              <%: Html.Partial("MunicipioList", Model)%>
              
            </div>
      <div class="editor-field" id="Localidades">
           
              <%: Html.Partial("LocalidadesList", Model)%>
             
            </div>

    - Adicionei esses scripts ao site.master. 

       <script type="text/javascript" src="<%: Url.Content("~/Scripts/jquery-1.5.1.min.js") %>"></script>
            <script type="text/javascript" src="<%: Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js") %>"></script>


    - Adicionei ao web.config. 

      <appSettings>
        <add key="webpages:Enabled" value="false" />
        <add key="ClientValidationEnabled" value="true"/>
        <add key="UnobtrusiveJavaScriptEnabled" value="true"/>
      </appSettings>

    O problema que ocorre é que quando eu seleciono o município no dropdownlist, o sistema não está reconhecendo a mudança de index, então não chama a action, consequentemente, não faz nada. Para mim está tudo certo, não estou conseguindo enxergar aonde está o erro. Vocês poderiam me ajudar? 


    • Editado Jéssica_Lau quarta-feira, 10 de dezembro de 2014 13:01 Esquecimento de parte do código.
    quarta-feira, 10 de dezembro de 2014 12:56