Page_cls.Asp
上传用户:btntkt
上传日期:2021-04-16
资源大小:5296k
文件大小:8k
源码类别:

WEB源码(ASP,PHP,...)

开发平台:

DOS

  1. <%
  2.  Class Cls_PageView
  3.   Private CookiesCacheName,CookiesCacheData,sstrCookiesName,CSQL
  4.   Private sstrPageUrl,sstrPageVar,sstrTableName,sstrFieldsList,sstrCondiction,sstrOrderList,sstrPrimaryKey,sintRefresh
  5.   Private sintRecordCount,sintPageSize,sintPageNow,sintPageMax,sstrPageInfo,sReloadtime
  6.   
  7.   Private Sub Class_Initialize
  8.    sstrCookiesName = ""
  9.    sstrPageUrl = ""
  10.    sstrPageVar = "page"
  11.    sstrTableName = ""
  12.    sstrFieldsList = ""
  13.    sstrCondiction = ""
  14.    sstrOrderList = ""
  15.    sstrPrimaryKey = ""
  16.    sintRefresh = 0
  17.    Reloadtime=3
  18.    sintRecordCount = 0
  19.    sintPageSize = 0
  20.    sintPageNow = 0
  21.    sintPageMax = 0
  22.    CSQL=""
  23.    CookiesCacheName=LCase(Replace(Request.ServerVariables("SERVER_NAME") & Request.ServerVariables("URL"),Split(request.ServerVariables("SCRIPT_NAME"),"/")(ubound(Split(request.ServerVariables("SCRIPT_NAME"),"/"))),""))
  24.   End Sub
  25.    
  26.   Private Sub class_terminate()
  27.   ' Set Conn=nothing
  28.   End Sub
  29.     
  30.  '类初始化,外部调用
  31.   Public Sub InitClass()
  32. If Not IsObject(Conn) Then ConnectionDatabase
  33. Call InitRecordCount()
  34. Call InitPageInfo()   
  35.   End Sub
  36.   
  37.   '保存记录数的 Cookies 变量
  38.   Public Property Let strCookiesName(Value)
  39.    sstrCookiesName = Value
  40.   End Property
  41.   '保存更新 Cookies 的时间
  42.   Public Property Let Reloadtime(Value)
  43.    sReloadtime = Value
  44.   End Property  
  45.   '转向地址
  46.   Public Property Let strPageUrl(Value)
  47.    sstrPageUrl = Value
  48.   End Property
  49.    
  50.   ' 表名
  51.   Public Property Let strTableName(Value)
  52.    sstrTableName = Value
  53.   End Property
  54.   '字段列表
  55.   Public Property Let strFieldsList(Value)
  56.    sstrFieldsList = Value
  57.   End Property
  58.   '查询条件
  59.   Public Property Let strCondiction(Value)
  60.    If Value <> "" Then
  61.     sstrCondiction = " WHERE " & Value
  62.    Else
  63.     sstrCondiction = ""
  64.    End If
  65.   End Property
  66.   '排序字段, 如: [ID] ASC, [CreateDateTime] DESC
  67.   Public Property Let strOrderList(Value)
  68.    If Value <> "" Then
  69.     sstrOrderList = " ORDER BY " & Value
  70.    Else
  71.     sstrOrderList = ""
  72.    End If
  73.   End Property
  74.    '获得总记录数
  75.   Public Property Let CountSQL(TSQL)
  76. CSQL=TSQL
  77.   End Property 
  78.  '用于统计记录数的字段
  79.   Public Property Let strPrimaryKey(Value)
  80.    sstrPrimaryKey = Value
  81.   End Property
  82.   
  83.   '每页显示的记录条数
  84.   Public Property Let intPageSize(Value)
  85.    sintPageSize = toNum(Value, 20)
  86.   End Property
  87.   '当前页
  88.   Public Property Let intPageNow(Value)
  89.    sintPageNow = toNum(Value, 1)
  90.   End Property
  91.   
  92.   '页面参数名称
  93.   Public Property Let strPageVar(Value)
  94.    sstrPageVar = Value
  95.   End Property
  96.   
  97.   '是否刷新. 1 为刷新, 其他值则不刷新
  98.   Public Property Let intRefresh(Value)
  99.    sintRefresh = toNum(Value, 0)
  100.   End Property
  101.   
  102.   '获得当前页
  103.   Public Property Get intPageNow()
  104.    intPageNow = sintPageNow
  105.   End Property
  106.   
  107.   '获得分页信息
  108.   Public Property Get strPageInfo()
  109.    strPageInfo = sstrPageInfo
  110.   End Property
  111.   
  112.     'cookies时间是否清空
  113.     Private Function ObjIsEmpty()
  114. Dim Temp
  115. ObjIsEmpty=True
  116. Temp = Request.Cookies("YxBBs")(CookiesCacheName&"_"&sstrCookiesName)
  117. CookiesCacheData=Split(Temp,"|||")
  118. If Instr(Temp,"|||")=0 Then Exit Function
  119. If Not IsArray(CookiesCacheData) Then Exit Function
  120. If Not IsDate(CookiesCacheData(1)) Then Exit Function
  121. If DateDiff("s",CDate(CookiesCacheData(1)),Now()) < 60*sReloadtime  Then
  122. ObjIsEmpty=False
  123. End If
  124. End Function
  125.   
  126.   '取得记录集, 二维数组或字串, 在进行循环输出时必须用 IsArray() 判断
  127.   Public Property Get arrRecordInfo()
  128. Dim rs, sql
  129. sql = "SELECT " & sstrFieldsList & " FROM " & sstrTableName & sstrCondiction & sstrOrderList
  130. If Not IsObject(Conn) Then ConnectionDatabase
  131. Set rs = Server.CreateObject("Adodb.RecordSet")
  132. rs.open sql, Conn, 1, 1
  133. If Not(rs.eof or rs.bof) Then
  134. rs.PageSize = sintPageSize
  135. If sintpageNow=0 Then sintpageNow=1
  136. rs.AbsolutePage = sintPageNow
  137. If Not(rs.eof or rs.bof) Then
  138. arrRecordInfo = rs.getrows(sintPageSize)
  139. Else
  140. arrRecordInfo = ""
  141. End If
  142. Else
  143. arrRecordInfo = ""
  144. End If
  145. rs.close
  146. Set rs = nothing
  147.   End Property
  148.   
  149.   '初始化记录数
  150.   Private Sub InitRecordCount()
  151. If Not ObjIsEmpty() Then
  152. sintRecordCount = Value
  153. Else
  154. Dim sql,rs
  155. If CSQL="" Or IsNull(CSQL) Then
  156. sql = "SELECT COUNT(" & sstrPrimaryKey & ")" & " FROM " & sstrTableName & sstrCondiction
  157. If Not IsObject(Conn) Then ConnectionDatabase
  158. Set rs = Conn.execute(sql)
  159. If rs.eof or rs.bof Then
  160. sintRecordCount = 0
  161. Else
  162. sintRecordCount = rs(0)
  163. End If
  164. Rs.close
  165. Set Rs=nothing
  166. Else
  167. sintRecordCount=CSQL
  168. End If
  169. Value=sintRecordCount
  170. End If
  171. End Sub
  172.     Private  Property Let Value(ByVal vNewValue)
  173. Dim Temp
  174. If sstrCookiesName<>"" Then 
  175.     Temp = Request.Cookies("YxBBs")(CookiesCacheName&"_"&sstrCookiesName)
  176. CookiesCacheData=Split(Temp,"|||")
  177. If IsArray(CookiesCacheData) And Instr(Temp,"|||")>0 Then
  178. CookiesCacheData(0)=vNewValue
  179. CookiesCacheData(1)=Now()
  180. Else
  181. ReDim CookiesCacheData(2)
  182. CookiesCacheData(0)=vNewValue
  183. CookiesCacheData(1)=Now()
  184. End If
  185. SetCookies CookiesCacheName&"_"&sstrCookiesName,CookiesCacheData
  186. Else
  187. Err.Raise vbObjectError + 1, "YxBBsCacheServer", " please change the CacheName."
  188. End If
  189. End Property
  190. Private Property Get Value()
  191. Dim Temp
  192. If sstrCookiesName<>"" Then 
  193.     Temp = Request.Cookies("YxBBs")(CookiesCacheName&"_"&sstrCookiesName)
  194. CookiesCacheData=Split(Temp,"|||")
  195. If IsArray(CookiesCacheData) And Instr(Temp,"|||")>0 Then
  196. Value=CookiesCacheData(0)
  197. Else
  198. Err.Raise vbObjectError + 1, "YxBBsCacheServer", " The CacheData Is Empty."
  199. End If
  200. Else
  201. Err.Raise vbObjectError + 1, "YxBBsCacheServer", " please change the CacheName."
  202. End If
  203. End Property 
  204.   
  205.   '初始化分页信息
  206.   Private Sub InitPageInfo()
  207. Dim surl,i,PageNMin,PageNMax
  208. sstrPageInfo = ""
  209. surl = sstrPageUrl   
  210. If Instr(1, surl, "?", 1) > 0 Then
  211. surl = surl & "&" & sstrPageVar & "="
  212. Else
  213. surl = surl & "?" & sstrPageVar & "="
  214. End If
  215. If sintPageNow <= 0 Then sintPageNow = 1
  216. If sintRecordCount mod sintPageSize = 0 Then
  217. sintPageMax = sintRecordCount  sintPageSize
  218. Else
  219. sintPageMax = sintRecordCount  sintPageSize + 1
  220. End If
  221. If sintPageNow > sintPageMax Then sintPageNow = sintPageMax
  222. sstrPageInfo =  "<div class=""page"" style=""text-align: left; float: left;width:40%;"">&nbsp;每页<font color=""red"">"&sintPageSize&"</font>条,共<font color=""red"">"&sintPageMax&"</font>页"
  223. sstrPageInfo = sstrPageInfo&",合计<font color=""red"">"&sintRecordCount&"</font>条记录"
  224. sstrPageInfo = sstrPageInfo &"</div><div class=""page"" style="" text-align: center; float: left;width:30%"">分页:"
  225. PageNMin=sintPageNow-4
  226. if PageNMin<1 then PageNMin=1' 显示最小页数
  227. PageNMax=sintPageNow+4
  228. if PageNMax>sintPageMax then PageNMax=sintPageMax' 显示最大页面
  229. sstrPageInfo = sstrPageInfo &"<a href='" & surl & "1'><font title='首页'><b>&#171;</b></font></a> "
  230. If sintPageNow>5 Then'如果页码值大于5则显示(更前)当前
  231. sstrPageInfo = sstrPageInfo &"<a href='" & surl & (sintPageNow - 5) & "' ><font title='上五页'><b>&#139;</b></font></a> "
  232. End if
  233. For i =PageNMin To PageNMax'循环输出页码
  234. If(i=sintPageNow) Then
  235. sstrPageInfo = sstrPageInfo &"<font color='#FF6600'>"& i &"</font> "
  236. else
  237. sstrPageInfo = sstrPageInfo &"<A title='转到第"& i &"页' HREF='" & surl & i &"'>"& i &"</A> "
  238. End if
  239. Next
  240. If (sintPageMax-sintPageNow)>5  Then
  241. sstrPageInfo = sstrPageInfo &"<a href='" & surl & (sintPageNow + 5) & "'><font title='下五页'><b>&#155;</b></font></a>"
  242. End if
  243. sstrPageInfo = sstrPageInfo &"<a href='" & surl & sintPageMax & "' ><font title='尾页'><b>&#187;</b></font></a>"
  244. sstrPageInfo = sstrPageInfo &"</div><div class=""page"" style="" text-align: right; float: left;width:20%;"">转到<input maxLength='6' size='2' name='topage' value='"&sintPageNow&"' onkeydown=if(window.event.keyCode==13){window.location.href='"&surl&"'+topage.value;}> <input Class='go' value='GO' type='button' onClick=location.href='"&surl&"'+topage.value>&nbsp;</div>"
  245. End Sub
  246.     
  247.   '记录Cookies
  248.   Private Sub SetCookies(Name,NewValue)
  249.    Response.Cookies("YxBBs").Expires = Date()+1
  250.        Response.Cookies("YxBBs")(Name)=Join(NewValue,"|||")
  251.   End Sub
  252.  '清空Cookies
  253.     Public Sub DelCookiesCache(Name)
  254.         Response.Cookies("YxBBs").Expires = Date()+1
  255. Response.Cookies("YxBBs")(CookiesCacheName&"_"&Name)=""
  256. End Sub
  257.    '长整数转换
  258.   Private function toNum(s, Default)
  259. s = s & ""
  260. If s <> "" And IsNumeric(s) Then
  261. toNum = int(s)
  262. Else
  263. toNum = Default
  264. End If
  265.   End function
  266. End Class
  267.  %>