项目过程中遇到一篇文章篇幅很长,下拉查看非常不便,
此方法实现长文章的手动分页,在后台添加内容过程中,我以“|”作为分页的标志,
1、webConfig中的设置。
当然你也可以设置其他字符作为分页标志。
2、页面上的代码。
|
3、后台代码。
首先,在后台定义一个私有类型的公共变量,在Page_Load方法的外面
private ContentPager pager;
Page_Load方法里面的代码
文章标题、发文时间、作者、来源之类的信息要单独绑定,不和内容信息一起,因为它们在翻页后是不变的。下面列出绑定代码:
1 DataSet ds = sadsdd.ExcuteToDataSet("查询语句"); 2 dlContent.DataSource = ds; 3 dlContent.DataBind(); 4 DataRow drow; 5 drow = ds.Tables["mytable"].Rows[0]; 6 string cont = drow["news_content"].ToString();//此部分可以把内容中的HTML代码转换一下,我也省略了 7 //文章分页,关键部分 8 pager = new ContentPager(); 9 pager.Lnknext = this.lnknext;10 pager.Lnkprev = this.lnkprev;11 pager.Lnklast = this.lnklast;12 pager.Lnkfist = this.lnkfist;13 pager.Pagenum = this.currentpage;14 pager.Pagecount = this.totalpage;15 pager.DisplayContent = this.content;16 string query = "&id=" + Request.QueryString["id"].ToString();17 pager.datapager(cont, query);
其中的dlContent为文章的标题以及发文时间,作者之类的信息。
本分页代码中需要用到的类
1 public class ContentPager:System.Web.UI.Page 2 { 3 private System.Web.UI.WebControls.HyperLink lnknext; 4 private System.Web.UI.WebControls.HyperLink lnkprev; 5 private System.Web.UI.WebControls.HyperLink lnkfist; 6 private System.Web.UI.WebControls.HyperLink lnklast; 7 private System.Web.UI.WebControls.Label pagenum; 8 private System.Web.UI.WebControls.Label pagecount; 9 private System.Web.UI.WebControls.Label displaycontent; 10 public ContentPager() 11 { 12 // 13 // TODO: 在此处添加构造函数逻辑 14 // 15 } 16 public void datapager(string content, string query) 17 { 18 string PagerSplit = System.Configuration.ConfigurationManager.AppSettings["PagerSplit"];//从web.config中获取分页符,当然这里可以自己定义,为了方便还是放到配置文件或者数据库中。 19 string[] contentArray = StringSplit(content, PagerSplit);//这里是一个方法,摘自网上 20 int PageCount = contentArray.Length; 21 this.pagecount.Text = "共" + PageCount.ToString() + "页"; 22 int CurPage; 23 //确定当前页数 24 if (System.Web.HttpContext.Current.Request.Params["Page"] != null) 25 { 26 CurPage = Convert.ToInt32(System.Web.HttpContext.Current.Request.Params["Page"]); 27 } 28 else 29 { 30 CurPage = 1; 31 } 32 if (CurPage < 1) CurPage = 1; 33 if (Convert.ToInt32(System.Web.HttpContext.Current.Request.Params["Page"]) > PageCount) 34 { 35 CurPage = PageCount; 36 } 37 //显示当前页数 38 this.pagenum.Text = "第" + CurPage.ToString() + "页"; 39 //下一页 40 if (CurPage != PageCount) 41 { 42 lnknext.NavigateUrl = System.Web.HttpContext.Current.Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(CurPage + 1) + query; 43 } 44 //上一页 45 if (CurPage > 1) 46 { 47 lnkprev.NavigateUrl = System.Web.HttpContext.Current.Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(CurPage - 1) + query; 48 } 49 //第一页 50 if (CurPage != 1) 51 { 52 lnkfist.NavigateUrl = System.Web.HttpContext.Current.Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(1) + query; 53 } 54 //最后一页 55 if (CurPage != PageCount) 56 { 57 lnklast.NavigateUrl = System.Web.HttpContext.Current.Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(PageCount) + query; 58 } 59 displaycontent.Text = contentArray[CurPage - 1].ToString(); 60 } 61 62 #region System.Web.UI.WebControls.HyperLink DisplayContent 63 public System.Web.UI.WebControls.Label DisplayContent 64 { 65 get 66 { 67 return this.DisplayContent; 68 } 69 set 70 { 71 this.displaycontent = value; 72 } 73 } 74 #endregion 75 #region System.Web.UI.WebControls.HyperLink Lnkprev 76 public System.Web.UI.WebControls.HyperLink Lnkprev 77 { 78 get 79 { 80 return this.lnkprev; 81 } 82 set 83 { 84 this.lnkprev = value; 85 } 86 } 87 #endregion 88 #region System.Web.UI.WebControls.HyperLink Lnknext 89 public System.Web.UI.WebControls.HyperLink Lnknext 90 { 91 get 92 { 93 return this.lnknext; 94 } 95 set 96 { 97 this.lnknext = value; 98 } 99 }100 #endregion101 #region System.Web.UI.WebControls.HyperLink Lnkfist102 public System.Web.UI.WebControls.HyperLink Lnkfist103 {104 get105 {106 return this.lnkfist;107 }108 set109 {110 this.lnkfist = value;111 }112 }113 #endregion114 #region System.Web.UI.WebControls.HyperLink Lnklast115 public System.Web.UI.WebControls.HyperLink Lnklast116 {117 get118 {119 return this.lnklast;120 }121 set122 {123 this.lnklast = value;124 }125 }126 #endregion127 #region System.Web.UI.WebControls.Label Pagenum128 public System.Web.UI.WebControls.Label Pagenum129 {130 get131 {132 return this.pagenum;133 }134 set135 {136 this.pagenum = value;137 }138 }139 #endregion140 #region System.Web.UI.WebControls.Label Pagecount141 public System.Web.UI.WebControls.Label Pagecount142 {143 get144 {145 return this.pagecount;146 }147 set148 {149 this.pagecount = value;150 }151 }152 #endregion153 #region 将字符串分割成数组154 ///155 /// 将字符串分割成数组156 /// 157 /// 158 /// 159 ///160 public string[] StringSplit(string strSource, string strSplit)161 {162 string[] strtmp = new string[1];163 int index = strSource.IndexOf(strSplit, 0);164 if (index < 0)165 {166 strtmp[0] = strSource;167 return strtmp;168 }169 else170 {171 strtmp[0] = strSource.Substring(0, index);172 return StringSplit(strSource.Substring(index + strSplit.Length), strSplit, strtmp);173 }174 }175 #endregion176 #region 采用递归将字符串分割成数组177 /// 178 /// 采用递归将字符串分割成数组179 /// 180 /// 181 /// 182 /// 183 ///184 private string[] StringSplit(string strSource, string strSplit, string[] attachArray)185 {186 string[] strtmp = new string[attachArray.Length + 1];187 attachArray.CopyTo(strtmp, 0);188 int index = strSource.IndexOf(strSplit, 0);189 if (index < 0)190 {191 strtmp[attachArray.Length] = strSource;192 return strtmp;193 }194 else195 {196 strtmp[attachArray.Length] = strSource.Substring(0, index);197 return StringSplit(strSource.Substring(index + strSplit.Length), strSplit, strtmp);198 }199 }200 #endregion201 }