1、消息模块数据表
2、写消息,直接跳转到一个页面写消息,本篇重点在于Repeater实现高效分页介绍了
3、Repeater实现高效分页
Repeater在数据控件中是一个比较轻量级的控件,这也使得它用起来比较灵活,也是我非常喜欢的一个控件,使用它可以灵活的实现各种功能,在实现消息模块的时候我使用它来是实现了高效分页的功能。(为什么我说是高效分页?这里的分页并不是向其他一些实现分页的方案,是使用PagedDataSource来实现分页,它的把数据全部读出来然后再计算页数,并获取该页的数据,这也的方法在数据量比较大的时候就会导致系统运行比较慢。高效分页是每次只读出相应页数的数据,不会因数据量变大而导致的系统运行速度较慢的情况。)
用到的一个SQLHelper类的一个分页方法
///
/// 要查询的表名或者视图名
/// 要排序的字段名
/// 要查询第几页
/// 返回的最大记录数
/// 查询中用到的参数集合
///
实现repeater高效分页的后台代码
using System; using System.Collections; using System.Configuration; using System.Data; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Xml.Linq; using NS.Entity; namespace erp.SystemManager { public partial class message : System.Web.UI.Page { string id = "123";//id是从session中获取,表示登录人的编号ID protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { Message mess = new Message(); //Employee emp = new Employee(); //emp = (Employee)Session["ThisUser"]; string sql = "select top 10 mes_ID,mes_sendPer,mes_title,mes_addTime,mes_type,mes_Status from Message "; sql = sql + " where mes_acceptPer='"+id+"' order by mes_addTime desc"; SqlHelper.SqlDbHelper db = new SqlHelper.SqlDbHelper(); string sql2 = "select count(*) from Message "; sql2 = sql2 + "where mes_acceptPer='"+id+"'"; int countOfpage = int.Parse(db.ExecuteScalar(sql2).ToString()); labCurPage.Text = "1"; labZongShu.Text = countOfpage.ToString(); if (countOfpage % 10 == 0) { labPage.Text = (countOfpage / 10).ToString(); } else labPage.Text = (countOfpage / 10 + 1).ToString(); DataTable dt = new DataTable(); dt = db.ExecuteDataTable(sql); Repeater1.DataSource = newData(dt); Repeater1.DataBind(); } } private static DataTable newData(DataTable dt) { for (int i = 0; i < dt.Rows.Count; i++) { if (dt.Rows[i]["mes_Status"].ToString() == "0") { dt.Rows[i]["mes_Status"] = "未阅读"; } else if (dt.Rows[i]["mes_Status"].ToString() == "1") { dt.Rows[i]["mes_Status"] = "已阅读"; } else { dt.Rows[i]["mes_Status"] = "已回复"; } } return dt; } protected void btnFirst_Click(object sender, ImageClickEventArgs e) { labCurPage.Text = "1"; bind(1); pagecount(); } protected void btnSearch_Click(object sender, EventArgs e) { string where = " and "; string type = DropDownList1.Text; string status = DropDownList2.Text; if (type == "全部类型的消息" && status == "全部状态的消息") { where = ""; } else if (type != "全部类型的消息" && status == "全部状态的消息") { where = where + " mes_type ='"+type+"'"; } else if (type == "全部类型的消息" && status != "全部状态的消息") { if (status == "已阅读") { where = where + "mes_Status='1'"; } else if (status == "未阅读") { where = where + "mes_Status='0'"; } else if (status == "已回复") { where = where + "mes_Status='2'"; } } else { if (status == "已阅读") { where = where + "mes_Status='1'"; } else if (status == "未阅读") { where = where + "mes_Status='0'"; } else if (status == "已回复") { where = where + "mes_Status='2'"; } where = where + " and mes_type ='" + type + "'"; } Session["where"] = where; Message mess = new Message(); //Employee emp = new Employee(); //emp = (Employee)Session["ThisUser"]; string sql = "select top 10 mes_ID,mes_sendPer,mes_title,mes_addTime,mes_type,mes_Status from Message "; sql = sql + " where mes_acceptPer='"+id+"' "+where+" order by mes_addTime desc"; SqlHelper.SqlDbHelper db = new SqlHelper.SqlDbHelper(); string sql2 = "select count(*) from Message "; sql2 = sql2 + "where mes_acceptPer='"+id+"'"; sql2 += where; int countOfpage = int.Parse(db.ExecuteScalar(sql2).ToString()); labCurPage.Text = "1"; labZongShu.Text = countOfpage.ToString(); if (countOfpage % 10 == 0) { labPage.Text = (countOfpage / 10).ToString(); } else labPage.Text = (countOfpage / 10 + 1).ToString(); DataTable dt = new DataTable(); dt = db.ExecuteDataTable(sql); Repeater1.DataSource = newData(dt); Repeater1.DataBind(); } protected void btnback_Click(object sender, ImageClickEventArgs e) { string cur = labCurPage.Text; int num = int.Parse(cur); if (num == 1) { Response.Write(" "); } else { num--; labCurPage.Text = num.ToString(); bind(num); pagecount(); } } ///
private void bind(int num) { string where; if (Session["where"] == null) { where = ""; } else where = Session["where"].ToString(); SqlHelper.SqlDbHelper db = new SqlHelper.SqlDbHelper(); where = "mes_acceptPer='" + id + "' " + where; string selectColumn = "mes_ID,mes_sendPer,mes_title,mes_addTime,mes_type,mes_Status"; DataTable dt = new DataTable(); dt = db.GetPagedDataTable(selectColumn, "mes_addTime", where, "Message", SqlHelper.OrderBy.DESC, num, 10, null, 0); // dt = db.GetPagedDataTable(selectColumn, "mes_addTime", "Message", SqlHelper.OrderBy.DESC, num, 10, null,0); Repeater1.DataSource = newData(dt); Repeater1.DataBind(); } private void pagecount() { string where; if (Session["where"] == null) { where = ""; } else where = Session["where"].ToString(); SqlHelper.SqlDbHelper db = new SqlHelper.SqlDbHelper(); string sql2 = "select count(*) from Message "; sql2 = sql2 + "where mes_acceptPer='" + id + "'"; sql2 += where; int countOfpage = int.Parse(db.ExecuteScalar(sql2).ToString()); labZongShu.Text = countOfpage.ToString(); if (countOfpage % 10 == 0) { labPage.Text = (countOfpage / 10).ToString(); } else labPage.Text = (countOfpage / 10 + 1).ToString(); } protected void btnnext_Click(object sender, ImageClickEventArgs e) { string cur = labCurPage.Text; string last = labPage.Text; int zongshu = int.Parse(last); int num = int.Parse(cur); if (num == zongshu) { Response.Write(" "); } else { num++; labCurPage.Text = num.ToString(); bind(num); pagecount(); } } protected void btnLast_Click(object sender, ImageClickEventArgs e) { string last = labPage.Text; int zongshu = int.Parse(last); labCurPage.Text = last; bind(zongshu); pagecount(); } protected void ImageButton1_Click(object sender, ImageClickEventArgs e) { string page = tbnum.Text; string cur = labCurPage.Text; string last = labPage.Text; int zongshu = int.Parse(last); int curpage = int.Parse(page); labCurPage.Text = cur; if (curpage > 0 && curpage <= zongshu) { bind(curpage); pagecount(); } else { Response.Write(" "); } } } }
前台代码只贴repeater相关模块
<%# DataBinder.Eval(Container.DataItem, "mes_sendPer")%>
<%# DataBinder.Eval(Container.DataItem, "mes_title")%>
<%# DataBinder.Eval(Container.DataItem, "mes_addTime")%>
<%# DataBinder.Eval(Container.DataItem, "mes_type")%>
" ><%# DataBinder.Eval(Container.DataItem, "mes_Status")%>
">查看 ">回复 ">删除
Repeater实现高效分页实现完成
由于本人是个新手,贴了很多代码,因为篇幅太长批量静态删除下篇再说,欢迎批评指正。。
最新评论