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>