Initial character pagination ASP.NET MVC 5

0

I would like to know if there is a way (some helper ) to perform paging of records by initial character.

For example, I have a list of people and would like the user to be able to page by the initial character.

Something like @Html.PagedListPager , which displays the option to choose only the initial characters in the database, etc ...

And if I have for example more than 25 (set size for the amount of records per page) people with the letter A, when I press the next page, it loses the search result.

I'm currently performing the following process:

Controller:

I get the letra parameter that is used in the Nome.StartsWith(letra) function to page with the specific letter.

public ActionResult Index(string sortOrder, string currentFilter, string searchString, int? page, string letra)
        {
            ViewBag.CurrentSort = sortOrder;

            if (searchString != null)
            {
                page = 1;
            }
            else
            {
                searchString = currentFilter;
            }

            ViewBag.CurrentFilter = searchString;

            var pessoasFisicas = from e in _db.PessoasFisicas select e;

            if (!string.IsNullOrEmpty(letra))
            {
                pessoasFisicas = pessoasFisicas.Where(e => e.Nome.StartsWith(letra))
                    .OrderBy(e => e.Nome).ThenBy(e => e.Municipio);
            }

            if (!string.IsNullOrEmpty(searchString))
            {
                pessoasFisicas = pessoasFisicas.Where(e => e.Nome.Contains(searchString))
                    .OrderBy(e => e.Nome).ThenBy(e => e.Municipio);
            }

            pessoasFisicas = pessoasFisicas.OrderBy(e => e.Nome).ThenBy(e => e.Municipio);

            var pageSize = 25;
            var pageNumber = (page ?? 1);
            return View(pessoasFisicas.ToPagedList(pageNumber, pageSize));
          }

HTML:

<nav>
    <div class="pagination">
        <div class="pagination-container">
            <ul class="pagination">
                <li><a href="/Base/PessoasFisicas">Todos</a></li>
                <li><a href="/Base/PessoasFisicas?letra=A">A</a></li>
                <li><a href="/Base/PessoasFisicas?letra=B">B</a></li>
                <li><a href="/Base/PessoasFisicas?letra=C">C</a></li>
                <li><a href="/Base/PessoasFisicas?letra=D">D</a></li>
                <li><a href="/Base/PessoasFisicas?letra=E">E</a></li>
                <li><a href="/Base/PessoasFisicas?letra=F">F</a></li>
                <li><a href="/Base/PessoasFisicas?letra=G">G</a></li>
                <li><a href="/Base/PessoasFisicas?letra=H">H</a></li>
                <li><a href="/Base/PessoasFisicas?letra=I">I</a></li>
                <li><a href="/Base/PessoasFisicas?letra=J">J</a></li>
                <li><a href="/Base/PessoasFisicas?letra=K">K</a></li>
                <li><a href="/Base/PessoasFisicas?letra=L">L</a></li>
                <li><a href="/Base/PessoasFisicas?letra=M">M</a></li>
                <li><a href="/Base/PessoasFisicas?letra=N">N</a></li>
                <li><a href="/Base/PessoasFisicas?letra=O">O</a></li>
                <li><a href="/Base/PessoasFisicas?letra=P">P</a></li>
                <li><a href="/Base/PessoasFisicas?letra=Q">Q</a></li>
                <li><a href="/Base/PessoasFisicas?letra=R">R</a></li>
                <li><a href="/Base/PessoasFisicas?letra=S">S</a></li>
                <li><a href="/Base/PessoasFisicas?letra=T">T</a></li>
                <li><a href="/Base/PessoasFisicas?letra=U">U</a></li>
                <li><a href="/Base/PessoasFisicas?letra=V">V</a></li>
                <li><a href="/Base/PessoasFisicas?letra=W">W</a></li>
                <li><a href="/Base/PessoasFisicas?letra=X">X</a></li>
                <li><a href="/Base/PessoasFisicas?letra=Y">Y</a></li>
                <li><a href="/Base/PessoasFisicas?letra=Z">Z</a></li>
            </ul>
        </div>
    </div>
</nav>
    
asked by anonymous 08.08.2018 / 18:39

0 answers