/// <summary> /// Metode kura papildina HtmlHelper klasi ar jaunu metodi un ļauj ģenerēt lappuses /// </summary> /// <param name="html"></param> /// <param name="pagingInfo"> lapusošanas informacija</param> /// <param name="pageUrl"> delegats caur kuru ģeneres lappuses linka stringu</param> /// <returns></returns> public static MvcHtmlString PageLinksAll(this HtmlHelper html, PagingInfo pagingInfo, Func<int, string> pageUrl) { StringBuilder builder = new StringBuilder(); //Veido vairakus <a href> linkus pēc kārtas izmantojot pageUrl delegatu for (int i = 1; i <= pagingInfo.TotalPages; i++) { TagBuilder tag = new TagBuilder("a"); tag.MergeAttribute("href", pageUrl(i)); tag.InnerHtml = i.ToString(); if (i == pagingInfo.CurrentPage) { tag.AddCssClass("selected"); } builder.Append(tag); } return MvcHtmlString.Create(builder.ToString()); }
/// <summary> /// Metode kura papildina HtmlHelper klasi ar jaunu metodi un ļauj ģenerēt lappuses /// </summary> /// <param name="html"></param> /// <param name="pagingInfo"> lappusošanas informacija</param> /// <param name="pageUrl"> delegats kurš ģenerēs lappaspuses href daļai</param> /// <param name="linkNum">Linku skaits</param> /// <returns></returns> public static MvcHtmlString PageLinksCompact(this HtmlHelper html, PagingInfo pagingInfo, Func<int, string> pageUrl, int linkNum) { StringBuilder builder = new StringBuilder(); if (pagingInfo.TotalPages <= 1) { TagBuilder tag = new TagBuilder("a"); tag.InnerHtml = "<<"; tag.AddCssClass("disabled"); builder.Append(tag); tag = new TagBuilder("a"); tag.InnerHtml = "<"; tag.AddCssClass("disabled"); builder.Append(tag); tag = new TagBuilder("a"); tag.InnerHtml = "1"; tag.AddCssClass("disabled"); builder.Append(tag); tag = new TagBuilder("a"); tag.InnerHtml = ">"; tag.AddCssClass("disabled"); builder.Append(tag); tag = new TagBuilder("a"); tag.InnerHtml = ">>"; tag.AddCssClass("disabled"); builder.Append(tag); return MvcHtmlString.Create(builder.ToString()); } else { //Links uz pirmo lapu TagBuilder tag = new TagBuilder("a"); tag.MergeAttribute("href", pageUrl(1)); tag.InnerHtml = "<<"; builder.Append(tag); //Links uz iepriekšejo lapu tag = new TagBuilder("a"); tag.MergeAttribute("href", pagingInfo.CurrentPage > 1 ? pageUrl(pagingInfo.CurrentPage - 1) : pageUrl(1)); tag.InnerHtml = "<"; builder.Append(tag); //Aprēķina cik linkus japarāda uz katru pusi int diapazon = (int) Math.Ceiling((decimal) linkNum/2); int toAdd = 0; int toDiapazon = (pagingInfo.CurrentPage - 1) + diapazon; int fromDiapazon; //Nodrošina pareizu linku skaitu jo dalot piem 3/2 = 2 tadelj viens skaitlis janoniem nost if (linkNum%2 == 0) { fromDiapazon = pagingInfo.CurrentPage - diapazon; } else { fromDiapazon = (pagingInfo.CurrentPage + 1) - diapazon; } //Parbauda vai fromDiapazon nav mazaks par viens ja ir tad izlabo to un pievieno mainigaja toAdd to kas vel //tad japieliek klāt bus toDiapazon if (fromDiapazon < 1) { toAdd = Math.Abs(fromDiapazon) + 1; fromDiapazon = 1; } //Parbauda vai ir kaukas japievieno toDiapazon delj ta ka fromDiapazon bija vertibas mazakas par viens if (toAdd != 0) { toDiapazon = toDiapazon + toAdd; toAdd = 0; } //Parbauda vai toDiapazon neparsniedz maksimalo lappushu skaitu, ja parsniedz pievieno mainigaja toAdd kas vel //tad japieliek klat bus fromDiapazon ja tur bus vieta if (toDiapazon > pagingInfo.TotalPages) { toAdd = toDiapazon - pagingInfo.TotalPages; toDiapazon = pagingInfo.TotalPages; } //Ja toDiapazona bija par daudz vertibu pieliek fromDiapazon vertibas ja ir vel kadas brivas vietas if (toAdd != 0 && fromDiapazon > 1) { while (fromDiapazon > 1 && toAdd > 0) { fromDiapazon--; toAdd--; } } //Ģenerē attiecīgo linku skaitu uz katru pusi for (int i = fromDiapazon; i <= toDiapazon; i++) { tag = new TagBuilder("a"); tag.MergeAttribute("href", pageUrl(i)); tag.InnerHtml = i.ToString(); if (i == pagingInfo.CurrentPage) { tag.AddCssClass("selected"); } builder.Append(tag); } //Links uz nākošo lapu tag = new TagBuilder("a"); tag.MergeAttribute("href", pagingInfo.CurrentPage != pagingInfo.TotalPages ? pageUrl(pagingInfo.CurrentPage + 1) : pageUrl(pagingInfo.TotalPages)); tag.InnerHtml = ">"; builder.Append(tag); //Links uz pēdējo lapu tag = new TagBuilder("a"); tag.MergeAttribute("href", pageUrl(pagingInfo.TotalPages)); tag.InnerHtml = ">>"; builder.Append(tag); return MvcHtmlString.Create(builder.ToString()); } }