分页代码

  1//统计当前分类记录数
  2                Conn.Open();
  3                
  4                if (Request.QueryString["XClass"!= null)
  5                {
  6                    XID = int.Parse(Request.QueryString["XClass"]);
  7                    strSQL = "SELECT COUNT(*) FROM Question WHERE Xclass = @XID";
  8                    Cmd = new OleDbCommand(strSQL, Conn);
  9                    Cmd.Parameters.Add(new OleDbParameter("@XID", OleDbType.Integer)).Value = XID;
 10                }

 11                else
 12                {
 13                    strSQL = "SELECT COUNT(*) FROM Question WHERE Dclass = @DID";
 14                    Cmd = new OleDbCommand(strSQL, Conn);
 15                    Cmd.Parameters.Add(new OleDbParameter("@DID", OleDbType.Integer)).Value = DID;
 16                }

 17
 18                intTotalRecord = (int)Cmd.ExecuteScalar();
 19
 20                intTotalPage = intTotalRecord % intPageSize == 0 ? (int)(intTotalRecord / intPageSize) : (int)(intTotalRecord / intPageSize) + 1;
 21                    
 22
 23                if (Request.QueryString["p"!= null && Request.QueryString["p"!= "")
 24                    intCurrentPage = int.Parse(Request.QueryString["p"]);
 25
 26                if (intCurrentPage > intTotalPage)
 27                    intCurrentPage = intTotalPage;
 28                    
 29                if (intCurrentPage - 1 <= 0)
 30                {
 31                    intStartRecord = 0;
 32                }

 33                else
 34                {                    
 35                    intStartRecord = intPageSize * (intCurrentPage - 1);
 36                }

 37                    
 38            
 39            
 40                //绑定分类记录
 41
 42                if (Request.QueryString["XClass"!= null)
 43                {
 44                    XID = int.Parse(Request.QueryString["XClass"]);
 45                    strSQL = "SELECT * FROM Question WHERE XClass = @XID";
 46                    Cmd = new OleDbCommand(strSQL, Conn);
 47                    Cmd.Parameters.Add(new OleDbParameter("@XID", OleDbType.Integer)).Value = XID;
 48                }

 49                else
 50                {
 51                    strSQL = "SELECT * FROM Question WHERE Dclass = @DID";
 52                    Cmd = new OleDbCommand(strSQL, Conn);
 53                    Cmd.Parameters.Add(new OleDbParameter("@DID", OleDbType.Integer)).Value = DID;
 54                }

 55
 56
 57                Adpt = new OleDbDataAdapter(Cmd);
 58                Adpt.Fill(Ds,intStartRecord, intPageSize,"Topic");
 59                Topic.DataSource = Ds.Tables["Topic"].DefaultView;
 60                //Topic.DataBind();
 61                //开始分页算法
 62                StringBuilder strLink = new StringBuilder("?");
 63                if (Request.QueryString["DClass"!= null && Request.QueryString["DClass"!= "")
 64                    strLink.AppendFormat("DClass={0}", Request.QueryString["DClass"]);
 65                if (Request.QueryString["XClass"!= null && Request.QueryString["XClass"!= "")
 66                    strLink.AppendFormat("&XClass={0}", Request.QueryString["XClass"]);
 67            
 68                if (intCurrentPage>1)
 69                    intRow=intCurrentPage*intPageSize-(intPageSize-1);
 70                
 71                else
 72                    intRow=1;
 73            
 74                if (intCurrentPage <= 3)
 75                {
 76                    for (int i = 1; i <= 5; i ++)
 77                    {
 78                        if (i <= intTotalPage)
 79                        {
 80                            StringBuilder strFormat = new StringBuilder(" <a href=\"");
 81                            strFormat.Append(strLink);
 82                            strFormat.Append("&p={0}\">[{0}]</a>");
 83                            if (i == intCurrentPage)
 84                                strFormat = new StringBuilder(" <font color=\"#FF0000\">[{0}]</font>");
 85                            strPages.AppendFormat(strFormat.ToString(), i);
 86                        }

 87                        else
 88                        {
 89                            break;
 90                        }

 91                    }

 92                    if (intTotalPage > 3)
 93                        strPages.AppendFormat("  <a href=\"{0}&p={1}\">[{1}]</a>", strLink.ToString(), intTotalPage);
 94                }

 95                else if (intCurrentPage < intTotalPage - 2)
 96                {
 97                    strPages.AppendFormat(" <a href=\"{0}&p=1\">[1]</a> ", strLink.ToString());
 98                    for (int i = intCurrentPage - 2; i <= intCurrentPage + 2; i ++)
 99                    {
100                        if (i < intTotalPage)
101                        {
102                            StringBuilder strFormat = new StringBuilder(" <a href=\"");
103                            strFormat.Append(strLink);
104                            strFormat.Append("&p={0}\">[{0}]</a>");
105                            if (i == intCurrentPage)
106                                strFormat = new StringBuilder(" <font color=\"#FF0000\">[{0}]</font>");
107                            strPages.AppendFormat(strFormat.ToString(), i);
108                        }

109                        else
110                        {
111                            break;
112                        }

113                    }

114                    strPages.AppendFormat("  <a href=\"{0}&p={1}\">[{1}]</a>", strLink.ToString(), intTotalPage);
115                }

116                else
117                {
118                    strPages.AppendFormat(" <a href=\"{0}&p=1\">[1]</a> ", strLink.ToString());
119                    for (int i = intTotalPage - 3; i <= intTotalPage; i ++)
120                    {
121                        StringBuilder strFormat = new StringBuilder(" <a href=\"");
122                        strFormat.Append(strLink);
123                        strFormat.Append("&p={0}\">[{0}]</a>");
124                        if (i == intCurrentPage)
125                            strFormat = new StringBuilder(" <font color=\"#FF0000\">[{0}]</font>");
126                        strPages.AppendFormat(strFormat.ToString(), i);
127                    }

128                }

129                //分页算法结束
130                DataBind();
131                Dispose();
132                Cmd.Dispose();
133                Conn.Close();
134                Conn.Dispose();
posted @ 2006-08-22 17:43  释天  阅读(153)  评论(0)    收藏  举报