Using System;
Using System.Collections.Generic;
Using System.Reflection;
Using System.Text;
Using SYSTEM.WEB.MVC;
Namespace SYSTEM.WEB.MVC
{
#region MVC Page Bar extension method Htmlpaginationbar
<summary>
MVC Page Bar extension method
</summary>
public static Class Htmlpaginationbar
{
<summary>
Raw Component Page bar (page call @Html. Paginationbar)
</summary>
<param name= "helper" ></param>
<param name= "bar" > page Bar builder </param>
<returns></returns>
public static mvchtmlstring Paginationbar (this htmlhelper helper, Paginationbar bar)
{
return new Mvchtmlstring (bar. Genpaginationhtml ());
}
}
#endregion
#region Paging Entity Pagebar
<summary>
Paging parameter class
</summary>
public class Pagebar
{
<summary>
Total pages
</summary>
public int RecordCount {get; set;}
<summary>
Current page Index
</summary>
public int PageIndex {get; set;}
<summary>
Current page Index
</summary>
public int PageSize {get; set;}
}
#endregion
#region Pager Bar Builder Paginationbar
public class Paginationbar
{
<summary>
Paging Navigation bar Builder
</summary>
<param name= "url" > page address template, where the changed page index section is replaced with {0} </param>
<param name= "Pagebar" > Pagination entity </param
Public paginationbar (String URL, Pagebar pagebar, object keyvalues = null)
{
M_url = URL;
M_pagecount = pagebar.recordcount% Pagebar.pagesize = = 0? Pagebar.recordcount/pagebar.pagesize: (Int32) (pagebar.recordcount/pagebar.pagesize) + 1;
M_pageindex = Pagebar.pageindex;
M_recordcount = Pagebar.recordcount;
M_pagesize = pagebar.pagesize;
M_keyvalues = KeyValues;
}
Private Int32 m_pageindex = 0;
Private Int32 m_pagecount = 0;
Private Int32 m_recordcount = 0;
Private Int32 m_pagesize = 0;
Private String m_url = String.Empty;
Private object m_keyvalues = null;
Private StringBuilder m_html = new StringBuilder ();
Private StringBuilder M_js = new StringBuilder ();
Private StringBuilder M_param = new StringBuilder ();
<summary>
Raw Ingredients page m_html and JS code
</summary>
<returns></returns>
Public String genpaginationhtml ()
{
StringBuilder m_html = new StringBuilder ();
JS parameter replication
M_js. Appendline ("<script> function pagination () {");
M_js. Append (Genjs ());
M_js. Appendline ("} pagination ();</script>");
Html
M_html. Append ("<div id= ' pagination ' >");
M_html. Append (Genfirst ());
M_html. Append (Genpre ());
M_html. Append (Gennext ());
M_html. Append (Genlast ());
M_html. Append (Genjump ());
M_html. Append (Genlabel ());
M_html. Append ("</div>");
Return m_html. ToString () + M_js. ToString ();
}
<summary>
Get JS Code
</summary>
<returns></returns>
Public String Genjs ()
{
if (m_keyvalues = = null)
return String.Empty;
StringBuilder js = new StringBuilder ();
Cyclic parameters
foreach (Var p in M_keyvalues.gettype (). GetProperties ())
{
Object val = p.getvalue (m_keyvalues, NULL);
Js. Appendline (String.Format ("document.getElementById (' {0} '). Value={1}", P.name, Val));
M_param. Append (String.Format ("&{0}={1}", P.name, Val));
}
Return JS. ToString ();
}
<summary>
Home
</summary>
Private String Genfirst ()
{
Return String.Format ("<a class= ' first ' href= ' {0}?pageindex={1}{2} ' > Home </a>", M_url, 0, M_param);
}
<summary>
Last
</summary>
Private String Genlast ()
{
Return String.Format ("<a class= ' last ' href= ' {0}?pageindex={1}{2} ' > End </a>", M_url, M_pagecount, M_param);
}
<summary>
Generate previous Page
</summary>
Private String Genpre ()
{
Return String.Format ("<a class= ' prev ' href= ' {0}?pageindex={1}{2} ' > Previous page </a>", M_url, (m_pageindex! = 1? m_ PageIndex-1:1), M_param);
}
<summary>
Generate next Page
</summary>
private String Gennext ()
{
Return String.Format ("<a class= ' next ' href= ' {0}?pageindex={1}{2} ' > Next </a>", M_url, (M_pageindex = = M_ PageCount? M_pageindex:m_pagecount + 1), m_param);
}
<summary>
Generated
</summary>
Private String Genjump ()
{
StringBuilder m_jump = new StringBuilder ();
for (Int32 i = 1; I <= m_pagecount; i++)
{
M_jump. Append (String.Format ("<option value={0}>{0}</option>", i));
}
Return String.Format ("<select id= ' pageIndex ' name= ' pageIndex ' onchange= ' javacript:window.location.href={1}?1=1{ 2} '/>{0}<select> ', M_jump, M_url, M_param);
}
<summary>
Generated
</summary>
Private String Genlabel ()
{
Return String.Format ({0} page, total {1} pages, {2} per page, total {3} strips, M_pageindex, M_pagecount, M_pagesize, M_recordcount);
}
}
#endregion
}
MVC Page Bar extension method