jscript 记录集分页类 Pagination v2.0

类别: CSharp.Net, function, 数据操作
标签: jscript, paged, recordset, pagination, page
摘要: ..
正文:

<% 
// shawl.qiu JScript Document
/*-----------------------------------------------------------------------------------*\
 * shawl.qiu JScript Pagination class v2.0
\*-----------------------------------------------------------------------------------*/

//---------------------------------begin class Pagination()-------------------------------//
function Pagination()
{ // shawl.qiu code
 //------------------------------------begin initer
 //------------------------------------end initer
 
 //------------------------------------begin public variable
 //------------------------------------end public variable
 
 //------------------------------------begin private variable
 //---------------begin about
 var Au = {};
  Au.Subject = "shawl.qiu JScript Pagination class";
  Au.Version = "v2.0";
  Au.Name = "shawl.qiu";
  Au.Email = "shawl.qiu@gmail.com";
  Au.Blog = "http://blog.csdn.net/btbtd/";
  Au.CreatedDate = "2007-1-10";
  Au.Update = {};
  Au.Update["1"] = "2007-1-22";
  Au.Update["2"] = "2007-6-6";
  Au.Update["3"] = "2007-9-11 v2.0";
 //---------------end about
 
 var This = this;
 
 var Param = {};
 Param.RecordSet = null;
 Param.PageSize = 20;
 Param.AbsolutePage = 1;
 
 Param.ListLength = 10;
 Param.QueryId = "page";
 
 Param.JumpJsFuncName = "fG2Url";
  
 var PVar = {};
 PVar.Executed = false;
 PVar.RecordCount = 0;
 
 var Word = {};
 Word.First = '首页';
 Word.Last = '尾页';
 Word.PreviousTen = '上十';
 Word.Previous = '上一';
 Word.Next = '下一';
 Word.NextTen = '下十';
 
 var ClassName = {};
 ClassName.Status = "sqPagedInfo";
 ClassName.Navigator = "sqPagedList";
 //------------------------------------end private variable
 
 //------------------------------------begin public method
 //-------------------Begin this.Get
 this.Get = {};
 this.Get.Au = fGetAu;
 //-------------------End this.Get
 
 //-------------------Begin this.Set
 this.Set = {};
 //-------------------End this.Set
 
 this.Go = fGo;
 this.Navigator = fNavigator;
 this.Status = fStatus;
 //------------------------------------end public method

 //------------------------------------begin private method
 function fGo(fIniter)
 {
  if(fIsFunc(fIniter)) fIniter(Param, Word, ClassName);
  Param.AbsolutePage = fFixValue(Param.AbsolutePage, Number1);
 } // end function fGo
 
 function fNavigator()
 {
  if(Param.RecordSet==null) fFatalError("RecordSet couldn't be null!");
  
  PVar.Executed = true;
  PVar.RecordCount = fFixValue(Param.RecordSet.RecordCount, Number);
  if(PVar.RecordCount === 0)return false;
  
  var iAllPage = Math.ceil(PVar.RecordCount / Param.PageSize);
  
  if(Param.PageSize > PVar.RecordCount) return false;
  
  var TempRe = new RegExp(['\\b',Param.QueryId,'\=.*[^&]'].join('')'i')
  var sUrl = ['?',Request.ServerVariables("QUERY_STRING"),'&',Param.QueryId,'='].join('');
  sUrl = sUrl
  .replace(TempRe, Param.QueryId + '=')
  .replace('?&''?')
  .replace('&&''&')
  ;
  
  Param.RecordSet.PageSize = Param.PageSize; // 设置每页大小
  
  if(Param.AbsolutePage < 1) Param.AbsolutePage = 1; // 当前所在页
  if(Param.AbsolutePage > iAllPage) Param.AbsolutePage = iAllPage;
  Param.RecordSet.AbsolutePage = Param.AbsolutePage;
  
  Response.write('<div class="'+ClassName.Navigator+'">');
  
  if(Param.AbsolutePage)
  {
   Response.Write('<a href="'+sUrl+'1">');
   Response.Write(Word.First);
   Response.Write('</a> ');
  }
  else
  {
   Response.Write('<span class="sqPagedNonLink">');
   Response.Write(Word.First);
   Response.Write('</span> ');
  }
  
  if(iAllPage > Param.ListLength)
  {
   if(Param.AbsolutePage > 10)
   {
    Response.Write('<a href="'+sUrl+(Param.AbsolutePage-0-10-(Param.AbsolutePage%10)+1)+'">');
    Response.Write(Word.PreviousTen);
    Response.Write('</a> ');
   }
   else
   {
    Response.Write('<span class="sqPagedNonLink">');
    Response.Write(Word.PreviousTen);
    Response.Write('</span> ');
   }
  }
  
  if(Param.AbsolutePage > 1)
  {
   Response.Write('<a href="'+sUrl+(Param.AbsolutePage-1)+'">');
   Response.Write(Word.Previous);
   Response.Write('</a> ');
  }
  else
  {
   Response.Write('<span class="sqPagedNonLink">');
   Response.Write(Word.Previous);
   Response.Write('</span> ');
  }
  
  for(var i = 0
  , temp = Param.AbsolutePage - (Param.AbsolutePage % Param.ListLength) + 1, temp_ = ''
  i < Param.ListLength;
  temp++ , i++ )
  {
   if(temp > iAllPage) break;
   if(temp === Param.AbsolutePage)
   {
    Response.Write('<span class="sqPagedCurLink">');
    Response.Write(temp);
    Response.Write('</span> ');
   }
   else
   {
    Response.Write('<a href="'+sUrl+temp+'">');
    Response.Write(temp);
    Response.Write('</a> ');
   }
  } // end for
  
  if(Param.AbsolutePage < iAllPage)
  {
   Response.Write('<a href="'+sUrl+(Param.AbsolutePage-0+1)+'">');
   Response.Write(Word.Next);
   Response.Write('</a> ');
  }
  else
  {
   Response.Write('<span class="sqPagedNonLink">');
   Response.Write(Word.Next);
   Response.Write('</span> ');
  }
  
  if(iAllPage > Param.ListLength)
  {
   if(Param.AbsolutePage < iAllPage -9)
   {
    Response.Write('<a href="' + sUrl + 
    (Param.AbsolutePage -0 +10 - (Param.AbsolutePage % 10) + 1) + '">');
    Response.Write(Word.NextTen);
    Response.Write('</a> ');
   }
   else
   {
    Response.Write('<span class="sqPagedNonLink">');
    Response.Write(Word.NextTen);
    Response.Write('</span> ');
   }
  } // end if
  
  ///if()
  
  if(Param.AbsolutePage != iAllPage)
  {
   Response.Write(' <a href="'+sUrl+iAllPage+'">');
   Response.Write(Word.Last);
   Response.Write('</a>');
  }
  else
  {
   Response.Write(' <span class="sqPagedNonLink">');
   Response.Write(Word.Last);
   Response.Write('</span>');
  }
  
  
  Response.Write(" 转到:<input type=\"text\" size=\"6\" \n");
  Response.Write("class=\"sqJump\" onkeypress=\"");
  Response.Write(Param.JumpJsFuncName);
  Response.Write("(this.value,event)\" />\n");
  
  Response.Write("<script type=\"text/javascript\">\n");
  Response.Write("//<![CDATA[\n");
  Response.Write(" function ");
  Response.Write(Param.JumpJsFuncName);
  Response.Write("(sUrl, oEvt){\n");
  Response.Write("  if(!oEvt)var oEvt=window.event;\n");
  Response.Write("  var kc=oEvt.which||oEvt.keyCode;\n");
  Response.Write("  if(kc==13){\n");
  Response.Write("   window.location.href=\"?page=\"+sUrl}\n");
  Response.Write(" }\n");
  Response.Write("//]]>\n");
  Response.Write("<\/script>\n");
  
  Response.Write("<style type=\"text/css\">\n");
  Response.Write("/* <![CDATA[ */\n");
  Response.Write(" .sqJump{\n");
  Response.Write("  border:0px;\n");
  Response.Write("  border-bottom:1px dashed black;\n");
  Response.Write(" }\n");
  Response.Write("/* ]]> */\n");
  Response.Write("</style>\n");
   
  Response.write('</div>');
  
 } // end function fNavigator()
 
 function fStatus()
 {
  var iRsCount = 0;
  
  if(!PVar.Executed) iRsCount = Param.RecordSet.RecordCount;
  else iRsCount = PVar.RecordCount;
  
  Response.write('<div class="'+ClassName.Status+'">');
  Response.Write(Param.PageSize + ' 篇/页 ');
  Response.Write(Param.AbsolutePage);
  Response.Write('/');
  Response.Write(Param.RecordSet.PageCount);
  Response.Write('页 共 ');
  Response.Write(iRsCount);
  Response.write(' 篇 </div>');
 } // end function fStatus()
 
 function fIsFunc(Func)
 { // shawl.qiu code, return Boolean
  if(Func) if(Func.constructor==Function) return true;
  return false;
 } // end function fIsFunc(Func)
 
 function fFatalError(sMsg)
 { // shawl.qiu code, void return
  if(!sMsg) sMsg = "an fatal error occurring, program abort now!"
  throw new Error(sMsg);
 } // end function fFatalError(sMsg)
 
 function fFixValue(Value, Parser, NullValue)
 { // shawl.qiu code, return Integer|String
  switch(Parser)
  {
   case Number:
    Value-=0;
    if(isNaN(Value))
    {
     if(typeof(NullValue)=="undefined") NullValue = 0;
     Value = NullValue;
    }  
    break;
    
   default:
    Value+="";
    if(Value=="undefined")
    {
     if(typeof(NullValue)=="undefined") NullValue = "";
     Value = NullValue;
    } 
    break;
  }
  return Value;
 } // end function fFixValue(sKey, sParse)
 
 function fGetAu(){ return Au; }
 //------------------------------------end private method
} // shawl.qiu code
//---------------------------------end class Pagination()---------------------------------//

//  var Pg = new Pagination();
//  Pg.Go(fIniter);
//  delete Pg;
// 
//  function fIniter(Param)
//  {
//  
//  } // end function fIniter(Param) 
 
%>


shawl.qiu Jscript Server-Side Library

Class Pagination Manual

---/------------------------------------------------------------------------------

  var rs = new ActiveXObject('adodb.recordset');
  rs.Open('select * from shawlqiu_ order by articleid desc', conn, 1);
  
  if(rs.Eof || rs.Bof)break;
  
  var StartDt = new Date();

  var Pg = new Pagination();
  Pg.Go(fIniter);
 
  Response.write('<div class="pagenav" style="text-align:center;">');
  
  Pg.Navigator();
  Pg.Status();
  
  Response.write('</div>');
  
  delete Pg;
 
  function fIniter(Param)
  {
   Param.RecordSet = rs;
   Param.PageSize = 20;
   Param.AbsolutePage = Request.QueryString('page');
   
   Param.ListLength = 10;
   Param.QueryId = "page";
  } // end function fIniter(Param) 
  
  var EndDt = new Date();
  Response.Write("<div style='text-align:center'>"+(EndDt-StartDt)+"</div>");
  
  Response.Write("<ol>");
  fGetRows(rs, false, fCallback, falsefalse20);
  Response.Write("<ol>");
  
  rs = null;
  
  function fGetRows(oRs, bShow, CallbackFunc, MixAr, bReturnSimpleArray, iLimitRows)
  { // shawl.qiu code, return array|VbArray; func: fIsFunc
   if(!iLimitRows) iLimitRows = -1
   var oAr = null;
   if(MixAr) oAr = new VBArray(oRs.GetRows(MixAr[0], MixAr[1], MixAr[2]));
   else oAr = new VBArray(oRs.GetRows(iLimitRows));
   
   var ar = oAr.toArray();
   var iItemLen = oAr.ubound();
   var iTotalLen = ar.length / (iItemLen + 1);
   var ResultAr = [];
   var bIsFunc = fIsFunc(CallbackFunc);
   
   for(var iLen = 0; iLen < iTotalLen; iLen++ )
   {
    if(!bReturnSimpleArray) ResultAr.push([]);
    for(var i = 0, j = iItemLen; i <= j; i++ )
    {
     if(bShow) Response.write(oAr.getItem(i, iLen));
     if(!bReturnSimpleArray) ResultAr[iLen].push(oAr.getItem(i, iLen));
    } // end for 1
    if(bIsFunc) CallbackFunc(ResultAr[iLen], iLen, iLimitRows);
    
    if(bShow) Response.write('<br/>');
   } // end for
   
   if(bReturnSimpleArray) return ar;
   return ResultAr;
  } // end function fGetRows(oRs, bShow, CallbackFunc, MixAr, bReturnVbArray, iLimitRows)

  function fIsFunc(Func)
  { // shawl.qiu code, return Boolean
   if(Func) if(Func.constructor==Function) return true;
   return false;
  } // end function fIsFunc(Func)
  
  function fCallback(Ar)
  {
   Response.Write("<li style='line-height:150%;'>");
   Response.Write((Ar[0] + ' ').link('?id=edit&atc=' + Ar[1]));
  }

 
文章相关信息:
主题: jscript 记录集分页类 Pagination v2.0
发表者: shawl.qiu
电子邮件: shawl.qiu@gmail.com
QQ: 908202921
MSN: btbtd@msn.com
Homepage: http://www.btbtd.org/
Blog: http://blog.csdn.net/btbtd/
发表日期: 2007-9-11 21:47:32
更新日期: 2007-9-11 21:47:32
来源引用: shawl.qiu CSharp DotNet 个人资料管理系统
引用本页: http://gi.2288.org/mod/code/display/Default.aspx?aid=601
关闭
Google
搜索WWW
搜索www.btbtd.org
搜索blog.csdn.net
Powered by shawl.qiu © 2008-2010 the shawl.qiu Javascript Kits
Copyright © 2008-2010 by shawl.qiu