I would like to make a filter with two DropDownList
. In the first filter are filtered the Units registered and in the second the Functions registered in that unit, with their respective Employees. The end result would be the list of Employees for that role in Grid
.
The filter works on GridView
, but does not filter the function according to the chosen unit.
Model CNES
public int CNESID { get; set; }
public string UnidadeID { get; set; }
public string Funcao { get; set; }
public string NomeProfissional { get; set; }
public string CPF { get; set; }
Controller
public class CNESController : Controller
{
private PortalPainelEntities db = new PortalPainelEntities();
// GET: /CNES/
public ActionResult Index(int? pagina, string currentFilter, string Pesquisa)
{
int tamanhopagina = 15;
int numeropagina = pagina ?? 1;
if (Pesquisa != null)
{
pagina = 1;
}
else
{
Pesquisa = currentFilter;
}
ViewBag.CurrentFilter = Pesquisa;
var cnes = from s in db.CNES select s;
//Metodo do Filtro para o Grid View
if (!String.IsNullOrEmpty(Pesquisa))
{
cnes = cnes.Where(p => p.NomeUnidade.ToUpper().Contains(Pesquisa.ToUpper())
|| p.Funcao.ToUpper().Contains(Pesquisa.ToUpper()));
}
return View(cnes.OrderBy(p => p.Nr_Cnes).ToPagedList(numeropagina, tamanhopagina));
}
//Lista de Unidades via JSon
public JsonResult ObterUnidade()
{
var unidadeLista = (from u in db.CNES
select new
{
u.NomeUnidade
}).Distinct().OrderBy(x => x.NomeUnidade);
return Json(unidadeLista, JsonRequestBehavior.AllowGet);
}
//Lista de Funções via Json, filtrando por Unidade.
public JsonResult ObterFuncao(string unidade)
{
var funcao = db.CNES
.Where(a => a.NomeUnidade == unidade)
.Select(a => new { a.Funcao }).Distinct()
.OrderBy(a => a.Funcao);
return Json(funcao, JsonRequestBehavior.AllowGet);
}
View
DropDownlist
@using (Html.BeginForm())
{
<div class="col-md-4">
@Html.DropDownList("NomeUnidade",
new SelectList(string.Empty, "NomeUnidade", "NomeUnidade"), "Selecione a Unidade",
new { @class = "form-control", @id = "unidade" })
</div>
<div class="col-md-4">
@Html.DropDownList("Pesquisa",
new SelectList(string.Empty, "Funcao", "Funcao"), "Selecione a Função",
new {@class = "form-control", @id = "funcao" })
</div>
<div class="col-md-1">
<input type="submit" name="btnSubmit" value="Buscar" class="btn btn-primary" />
</div>
}
Script to populate DropDownList
<script type="text/javascript">
$(document).ready(function () {
$.getJSON('/CNES/ObterUnidade', function (data) {
for (i = 0; i < data.length; i++) {
$('#unidade').append('<option value="' +
data[i].NomeUnidade + '">' + data[i].NomeUnidade + '</option');
}
}).fail(function (jqXHR, textStatus, errorThrown) {
alert('Erro ao obter a Unidade!');
});
});
$('#unidade').change(function () {
var unidade = $(this).find(":selected").val();
$.getJSON('/CNES/ObterFuncao', { unidade: unidade }, function (data) {
$('#funcao option').remove();
for (i = 0; i < data.length; i++) {
$('#funcao').append('<option value="' +
data[i].Funcao + '">' + data[i].Funcao + '</option');
}
}).fail(function (jqXHR, textStatus, errorThrown) {
// Ajax fail callback function.
alert('Erro ao obter a Função.!');
});
});