Asp.net bir projemde uzun bir metni kendi içerisinde sayfalara bölerek göstermem gerekti. Biraz araştırma sonucunda örnek bir kodu kendime göre uyarlayarak çözüm bulabildim. Benim gibi uzun uzun aramayın diye paylaşmak istedim.
Projenize
using System.Text.RegularExpressions;
Fonksiyonumuz;
public static string MetinSayfala(string Metin) { string Cikti; string ThisPage = HttpContext.Current.Request.ServerVariables["SCRIPT_NAME"]; string SayfaNo; SayfaNo = HttpContext.Current.Request.QueryString["yazisayfa"]; if (Metin.IndexOf("<!--pagebreak-->") != -1) { string[] Pages = Regex.Split(Metin, "<!--pagebreak-->"); int TotalPages = Pages.GetUpperBound(0) + 1; int sayac = 1; int SayfaNumarasi = 1; if (SayfaNo != null) { SayfaNumarasi = System.Convert.ToInt32(SayfaNo); } Cikti = Pages[SayfaNumarasi - 1]; Cikti += "<br><br>SAYFA: "; while (sayac <= TotalPages) { if (sayac == SayfaNumarasi) { Cikti += sayac.ToString() + " "; } else { Cikti += "<a href=\"" + ThisPage + "?yazisayfa=" + sayac.ToString(); Cikti += "\">" + sayac.ToString() + "</a> "; } sayac++; } } else { Cikti = Metin; } return Cikti; }
Kısaca Açıklarsak; Metin içerisinde “<!–pagebreak–>” geçen kısım aralıklarını sayfalamaya başlıyor.
Bunu yönetim panelinden girilen kayıda aktarmakta biraz sıkıntı yaşamadım dersem yalan olur. Metin editörü olarak FCKeditor kullanıyorum. Orada sayfa sonu ekle butonu
“<div style=”page-break-after: always”><span style=”DISPLAY:none”> </span></div>” bazen de “<div style=”page-break-after: always”><span style=”display:none”> </span></div>” ekliyor. Bunu koda uyarlamak için;
string metin = dt1.Rows[0]["detay"].ToString().Replace(@"<div style=""page-break-after: always;""><span style=""DISPLAY:none""> </span></div>", "<!--pagebreak-->").Replace(@"<div style=""page-break-after: always""><span style=""display: none""> </span></div>", "<!--pagebreak-->"); Response.Write(PageArticle(metin));
şeklinde kullanmıştım. (metinin uzunluğuna göre arka planda servisi zorlayabilir. )
Referans
1 Yorum
işime yaradı bu kod teşekkürler 🙂