WebForm Mvc용 Pager 페이지 구성 요소 C# 구현
페이지 컨트롤러는 사실 링크에 따라 페이지 간에 매개 변수를 전달하는 것이다. 왜냐하면 MVC에서 매개 변수를 전달하는 new {para=val} 이런 방식으로 매개 변수를 전달하는 것을 볼 수 있기 때문이다. 그래서 나는 이런 전달 매개 변수를 모방할 수 있는 방식을 보았기 때문에dynamic로 매개 변수로 이미지 전달을 하려고 한다.
다음은 내가 쓴 구체적인 실현 코드를 동봉한 것이다
데이터 처리 코드:
1. IPagedList 인터페이스 정의
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Infrastruction.Pager
{
public interface IPagedList
{
int pageIndex { get; set; }
int pageSize { get; set; }
int totalItemCount { get; set; }
int totalPageCount { get; }
}
}
2. IPagedList 인터페이스 구현
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace Infrastruction.Pager
{
public class PagedList : List, IPagedList
{
public int pageIndex
{
get;
set;
}
public int pageSize
{
get;
set;
}
public int totalItemCount
{
get;
set;
}
public int totalPageCount
{
get
{
return totalItemCount % pageSize == 0 ? (totalItemCount / pageSize) : (totalItemCount / pageSize + 1);
}
}
public PagedList(IEnumerable sources, int pageIndex, int pageSize)
{
if (sources != null && sources.Any())
{
this.AddRange(sources.Skip(pageSize * (pageIndex - 1)).Take(pageSize).ToList());
}
this.pageIndex = pageIndex;
this.pageSize = pageSize;
this.totalItemCount = sources.Count();
}
}
}
페이지 레이블 처리 코드:
3.PagerHelper
using Infrastruction.Pager;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Web;
using System.Web.UI;
namespace System.Web.UI
{
public static class PagerHelper
{
public static string Pager(string url, IPagedList pagedList)
{
StringBuilder builder = new StringBuilder();
if (pagedList != null)
{
builder.Append("");
builder.Append("window.onload = function () {");
builder.Append(" var elements = document.getElementById('pager').childNodes;");
builder.Append(" for (var i = 0; i < elements.length; i++) {");
builder.Append("var txt = elements[i].innerText || elements[i].textContent;");
builder.Append(" if (elements[i].nodeType =='1' && txt == '" + pagedList.pageIndex + "') {");
builder.Append("elements[i].style.textDecoration = 'underline';break; } } }");
builder.Append(" ");
builder.Append("");
builder.Append("");
builder.AppendFormat(" {0} :{1}/{2}", pagedList.totalItemCount, pagedList.pageIndex, pagedList.totalPageCount, " ");
builder.Append("");
builder.Append(" ");
builder.Append(" ");
builder.Append(" ");
builder.Append(" ");
if (pagedList.pageIndex > 1 && pagedList.pageIndex <= pagedList.totalPageCount)
{
builder.Append("");
builder.AppendFormat("{2}", url, 1, " ");
builder.Append("");
builder.Append(" ");
builder.Append("");
builder.AppendFormat("{2}", url, pagedList.pageIndex - 1, " ");
builder.Append("");
builder.Append(" ");
}
if (pagedList.totalPageCount > 1 && pagedList.totalPageCount <= 10)
{
for (int i = 1; i <= pagedList.totalPageCount; i++)
{
builder.Append("");
builder.AppendFormat("{2}", url, i, i);
builder.Append("");
builder.Append(" ");
}
}
else if (pagedList.totalPageCount > 10)
{
if (pagedList.pageIndex < 11)
{
for (int i = 1; i <= 10; i++)
{
builder.Append("");
builder.AppendFormat("{2}", url, i, i);
builder.Append("");
builder.Append(" ");
}
builder.Append("");
builder.AppendFormat("{2}", url, 11, "...");
builder.Append("");
builder.Append(" ");
}
else
{
builder.Append("");
builder.AppendFormat("{2}", url, (pagedList.pageIndex - 6), "...");
builder.Append("");
builder.Append(" ");
if (pagedList.pageIndex >= 11 && pagedList.totalPageCount <= pagedList.pageIndex + 5)
{
for (int i = pagedList.pageIndex - 5; i <= pagedList.totalPageCount; i++)
{
builder.Append("");
builder.AppendFormat("{2}", url, i, i);
builder.Append("");
builder.Append(" ");
}
}
else
{
for (int i = pagedList.pageIndex - 5; i <= pagedList.pageIndex + 5; i++)
{
builder.Append("");
builder.AppendFormat("{2}", url, i, i);
builder.Append("");
builder.Append(" ");
}
builder.Append("");
builder.AppendFormat("{2}", url, (pagedList.pageIndex + 6), "...");
builder.Append("");
builder.Append(" ");
}
}
}
if (pagedList.pageIndex >= 1 && pagedList.pageIndex < pagedList.totalPageCount)
{
builder.Append("");
builder.AppendFormat("{2}", url, pagedList.pageIndex + 1, " ");
builder.Append("");
builder.Append(" ");
builder.Append("");
builder.AppendFormat("{2}", url, pagedList.totalPageCount, " ");
builder.Append("");
builder.Append(" ");
}
builder.Append("");
}
return builder.ToString();
}
public static string Pager(string url, IPagedList pagedList, dynamic objAttr)
{
StringBuilder builder = new StringBuilder();
if (pagedList != null)
{
builder.Append("");
builder.Append("window.onload = function () {");
builder.Append(" var elements = document.getElementById('pager').childNodes;");
builder.Append(" for (var i = 0; i < elements.length; i++) {");
builder.Append("var txt = elements[i].innerText || elements[i].textContent;");
builder.Append(" if (elements[i].nodeType =='1' && txt == '" + pagedList.pageIndex + "') {");
builder.Append("elements[i].style.textDecoration = 'underline';break; } } }");
builder.Append(" ");
string paras = "";
PropertyInfo[] infos = objAttr.GetType().GetProperties();
if (infos != null && infos.Any())
{
foreach (var item in infos)
{
paras += string.Format("{0}={1}", item.Name, item.GetValue(objAttr, null));
paras += "&";
}
}
paras = paras + "pageIndex=";
builder.Append("");
builder.Append("");
builder.AppendFormat(" {0} :{1}/{2}", pagedList.totalItemCount, pagedList.pageIndex, pagedList.totalPageCount, " ");
builder.Append("");
builder.Append(" ");
builder.Append(" ");
builder.Append(" ");
builder.Append(" ");
if (pagedList.pageIndex > 1 && pagedList.pageIndex <= pagedList.totalPageCount)
{
builder.Append("");
builder.AppendFormat("{2}", url, paras + 1, " ");
builder.Append("");
builder.Append(" ");
builder.Append("");
builder.AppendFormat("{2}", url, paras + (pagedList.pageIndex - 1), " ");
builder.Append("");
builder.Append(" ");
}
if (pagedList.totalPageCount > 1 && pagedList.totalPageCount <= 10)
{
for (int i = 1; i <= pagedList.totalPageCount; i++)
{
builder.Append("");
builder.AppendFormat("{2}", url, paras + i, i);
builder.Append("");
builder.Append(" ");
}
}
else if (pagedList.totalPageCount > 10)
{
if (pagedList.pageIndex < 11)
{
for (int i = 1; i <= 10; i++)
{
builder.Append("");
builder.AppendFormat("{2}", url, paras + i, i);
builder.Append("");
builder.Append(" ");
}
builder.Append("");
builder.AppendFormat("{2}", url, paras + 11, "...");
builder.Append("");
builder.Append(" ");
}
else
{
builder.Append("");
builder.AppendFormat("{2}", url, paras + (pagedList.pageIndex - 6), "...");
builder.Append("");
builder.Append(" ");
if (pagedList.pageIndex >= 11 && pagedList.totalPageCount <= pagedList.pageIndex + 5)
{
for (int i = pagedList.pageIndex - 5; i <= pagedList.totalPageCount; i++)
{
builder.Append("");
builder.AppendFormat("{2}", url, paras + i, i);
builder.Append("");
builder.Append(" ");
}
}
else
{
for (int i = pagedList.pageIndex - 5; i <= pagedList.pageIndex + 5; i++)
{
builder.Append("");
builder.AppendFormat("{2}", url, paras + i, i);
builder.Append("");
builder.Append(" ");
}
builder.Append("");
builder.AppendFormat("{2}", url, paras + (pagedList.pageIndex + 6), "...");
builder.Append("");
builder.Append(" ");
}
}
}
if (pagedList.pageIndex >= 1 && pagedList.pageIndex < pagedList.totalPageCount)
{
builder.Append("");
builder.AppendFormat("{2}", url, paras + (pagedList.pageIndex + 1), " ");
builder.Append("");
builder.Append(" ");
builder.Append("");
builder.AppendFormat("{2}", url, paras + pagedList.totalPageCount, " ");
builder.Append("");
builder.Append(" ");
}
builder.Append("");
}
return builder.ToString();
}
}
}
4. PagerLinqExtension(linq 기반 확장)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Web;
namespace Infrastruction.Pager
{
public static class PagerLinqExtension
{
public static PagedList ToPagedList(this IQueryable source, int pageIndex, int pageSize)
{
return new PagedList(source, pageIndex, pageSize);
}
}
}
호출 방법
1. Webform 호출: 또는 literal을 사용하여 백그라운드에 바인딩해도 됩니다.
2.Mvc 호출:
확장하는 방법이 필요해요.
namespace System.Web.Mvc.Html
{
public static class HtmlExtension
{
public static IHtmlString Pager(this HtmlHelper helper, string url, IPagedList pagedList)
{
return helper.Raw(PagerHelper.Pager(url, pagedList));
}
public static IHtmlString Pager(this HtmlHelper helper, string url, IPagedList pagedList, dynamic objAttr)
{
return helper.Raw(PagerHelper.Pager(url, pagedList, objAttr));
}
}
}
그런 다음 페이지에서 @Html을 호출합니다.Pager("Products.aspx", pageList, new { cid=Cid,......})
모든 코드가 위에 있으니 열심히 공부하고 페이지 컨트롤을 배우는 데 도움이 되었으면 합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.