c# loops for-loop pagination paging

Paginación dinámica en C#



loops for-loop (1)

soy nuevo aqui

Tengo el mismo problema que Marcus aquí

la paginación que trato de hacer debería verse más o menos así:

1 2 3 4 5 6 ... 101

Cuando hago clic en el número 5 me gustaría que muestre los números así:

1 ... 3 4 5 6 7 ... 101

cuando estoy en las últimas páginas quiero que se vea similar al primero:

1 ... 96 97 98 99 100 101

El número en negrita es la página que estás viendo actualmente.

Quiero que los puntos aparezcan solo cuando hay más de 7 páginas disponibles, de lo contrario, debería verse como una paginación normal:

1 2 3 4 5 6 7

en lugar de hacerlo en negrita, agregué algunos CSS en él ...

mi código original es algo como esto ...

if (ListCount > ListPerPage) { if (Currentpage > PageCount) { Response.Redirect(Request.Path + "/?p=" + PageCount); } html += "<ul class=/"productListPaging/">"; for (int x = 1; x <= PageCount; x++) { if (x == Currentpage) { html += "<li class=/"active/">"; } else { html += "<li>"; } html += "<a href=/"javascript:void(0);/" onclick=/"changePage(" + x + ");/">"; html += x; html += "</a>&nbsp;"; html += "</li> &nbsp;"; } html += "</ul>"; }

este código muestra todas las páginas, no lo agrupa ... Modifiqué el código anterior, pero solo muestra la primera y la última página, Me gusta si tengo 10 páginas, solo muestra la página 1 y 10 y no 1 2 3 ... 10

Cualquier ayuda sería apreciada..

Gracias

Johan

Resuelto el algoritmo

int before = 2; int after = 2; for (int x = 1; x <= Pagecount; x++) { if (x == CurrentPage) { if (x == Pagecount) { html += ""; } else { html += "<li class=/"active/">"; #region Page Loop # html += "<a href=/"" + Url; html += querypage + x; if (sortid != "") { html += querysort; } if (viewtype != "") { html += queryviews; } if (pricing != 0) { html += queryrange; } html += "/" >"; html += x; html += "</a>&nbsp;"; #endregion html += "</li>"; } } else if (x < CurrentPage - before) { if (befli == 0) { html += "<li class=/"dotdotdot/">"; html += "<a href=/"#/">...</a>"; html += "</li>"; befli++; } } else if (x > CurrentPage - before && x < CurrentPage + after) { if (x == Pagecount) { html += ""; } else { html += "<li>"; #region Page Loop # html += "<a href=/"" + Url; html += querypage + x; if (sortid != "") { html += querysort; } if (viewtype != "") { html += queryviews; } if (pricing != 0) { html += queryrange; } html += "/" >"; html += x; html += "</a>&nbsp;"; #endregion html += "</li>"; } } else if (x > CurrentPage + after) { if (aftli == 0) { html += "<li class=/"dotdotdot/">"; html += "<a href=/"#/">...</a>"; html += "</li>"; aftli++; } } else if (x == Pagecount) { html += ""; }

}

Solo se necesita calcular el ciclo for usando el mayor o menor que

Ok, la lógica

''

int Before = #How Many Items Before Selected Number int After = #How Many Items After Selected Number int PageCount = #How Many Pages int CurrentPage = #Current Page //First Page if (PageCount > 1) { // Here For Page Set Static 1 } //Previous Button if (CurrentPage != 1) { //Code Here (CurrentPage - 1) } for loop for(int x = 1; x < PageCount; x++) { if (x == 1) { Page 1 //Static Page 1 if (x == CurrentPage) { //Bold Font / Highlight } else { //Normal } } else if ( x == CurrentPage) { if(x == PageCount) { //None } else { //Bold Font / Highlight } } else if (x < CurrentPage - Before) { // . . . } else if (x > CurrentPage - Before && x < CurrentPage + After) { if(x == PageCount) { //None } else { //Normal Font } } else if (x > CurrentPage + After) { // . . . } else if (x == PageCount) { if (x == CurrentPage) { //Bold Highlight } else { //Normal } } } //Next Button if (CurrentPage != PageCount) { //Code Here (CurrentPage + 1) } //First Page if (PageCount > 1) { // Here For Page Set Static Last Page }

''

Hope My Logic ayuda a otros usuarios que necesitan paginación usando bucles for.

Johan


Prueba algo como esto. Necesita personalizarlo según su necesidad.

/// <summary> /// Builds the paging HTML. /// </summary> /// <param name="currentpage">The current selected page.</param> /// <param name="totalPages">The total pages for paging.</param> /// <param name="dotsApearanceCount">The dots apearance count. How many dots (.) you want</param> /// <param name="groupCount">The group count. Group that is build based on selected page</param> /// <returns></returns> public string BuildPagingHTML(int currentpage, int totalPages, int dotsApearanceCount, int groupCount) { StringBuilder sbPagingHtml = new StringBuilder(); sbPagingHtml.Append("<ul class=/"productListPaging/">"); // Display the first page sbPagingHtml.Append("<li>"); sbPagingHtml.Append("<a href=/"javascript:void(0);/" onclick=/"changePage(" + 1 + ");/">"); sbPagingHtml.Append(1); sbPagingHtml.Append("</a>&nbsp;"); sbPagingHtml.Append("</li> &nbsp;"); if (totalPages > 1 && currentpage - 2 >= 1) { sbPagingHtml.Append(GenerateDots(dotsApearanceCount)); for (var linkCount = currentpage - 2; linkCount <= currentpage + 2; linkCount++) { if (linkCount >= 2 && linkCount <= totalPages - 2) { if (currentpage == linkCount) { sbPagingHtml.Append("<li class=''active''>"); } else { sbPagingHtml.Append("<li>"); } sbPagingHtml.Append("<a href=/"javascript:void(0);/" onclick=/"changePage(" + linkCount + ");/">"); sbPagingHtml.Append(linkCount); sbPagingHtml.Append("</a>&nbsp;"); sbPagingHtml.Append("</li> &nbsp;"); } } sbPagingHtml.Append(GenerateDots(dotsApearanceCount)); // Display the last page sbPagingHtml.Append("<li>"); sbPagingHtml.Append("<a href=/"javascript:void(0);/" onclick=/"changePage(" + totalPages + ");/">"); sbPagingHtml.Append(totalPages); sbPagingHtml.Append("</a>&nbsp;"); sbPagingHtml.Append("</li> &nbsp;"); } sbPagingHtml.Append("</ul>"); return sbPagingHtml.ToString(); } /// <summary> /// Generates the dots. /// </summary> /// <param name="numberofDots">The numberof dots.</param> /// <returns></returns> public string GenerateDots(int numberofDots) { StringBuilder sbPagingHtml = new StringBuilder(); for (var dotCount = 1; dotCount <= numberofDots; dotCount++) { sbPagingHtml.Append("<li>"); sbPagingHtml.Append("<a>"); sbPagingHtml.Append("."); sbPagingHtml.Append("</a>&nbsp;"); sbPagingHtml.Append("</li> &nbsp;"); } return sbPagingHtml.ToString(); }