コード例 #1
0
        // GET: Categorias
        public async Task <IActionResult> Index(string sortOrder, string searchString, string currentFilter, int?page)
        {
            ViewData["CurrentSort"] = sortOrder;//obtiene la obicacion actual;

            ViewData["NameSortParm"]        = String.IsNullOrEmpty(sortOrder) ? "name_desc" : "";
            ViewData["DescripcionSortParm"] = sortOrder == "descripcion_asc"?"descripcion_desc":"descripcion_asc";
            ViewData["CurrentFilter"]       = searchString; // obtiene el valor a buscar en el input

            if (searchString != null)
            {
                page = 1;
            }//validacion de la busqueda muestra, si hay resultado o noes lo que muestra.
            else
            {
                searchString = currentFilter;
            }
            var categorias = from s in _context.Categoria select s; //un select referente a una query

            if (!String.IsNullOrEmpty(searchString))                //verificar si la var Serchstring tiene nombre o descripcio
            {
                categorias = categorias.Where(s => s.Name.Contains(searchString) || s.Descripcion.Contains(searchString));
            }
            switch (sortOrder) // ordena lascategorias
            {
            case "name_desc":
                categorias = categorias.OrderByDescending(s => s.Name);
                break;

            case "descripcion_asc":
                categorias = categorias.OrderBy(s => s.Descripcion);
                break;

            case "descripcion_desc":
                categorias = categorias.OrderByDescending(s => s.Descripcion);
                break;

            default:
                categorias = categorias.OrderBy(s => s.Name);
                break;
            }
            //return View(await _context.Categoria.ToListAsync());
            // regresa la ista con el ordenamiento realizado a la coleccion Categorias
            //return View(await categorias.AsNoTracking().ToListAsync());

            int pageSize = 5;                                                                                         //visualisa el nuemero de elementos que muestra una vista

            return(View(await Paginacion <Categoria> .CreatesAsync(categorias.AsNoTracking(), page ?? 1, pageSize))); //regresa el total de resultado de elemento.
        }