客户端JS定时刷新分页

      Asp.Net服务器端有相关分页的控件或者第三方的分页插件可以实现分页。我经常使用的AspNetPager组件就是一个非常好用的分页插件。但在某些特殊情况下,我们需要实现客户端的定时刷新分页,比如股票模拟大赛,下单后,今日委托的数据信息,可以在进入大赛的首页的左侧显示,每页显示五条记录,每五页是一组(即1 2 3 4 5 ...或 ... 1 2 3 4 5 ...)。当前页码红色字体显示,不可点击,刷新后,还是显示在当前页(... 是上一个五页的最后一页,点击后,跳转到上一个五页。或者是下一个五页的第一页,点击后,跳转到下一个五页【不足五页,有几页就显示几页】)。这个效果就是实现AspNetPager分页那样的效果。之所以要客户端定时刷新分页,是因为下单后,今日委托的数据会增加,这样会导致列表数据增加,页码也会增加。列表数据的更新也是用客户端脚本来更新,这里只谈分页的定时刷新。

      思路:需要保存当前的页码,刷新时,就可以取到这个的页码。这个页码可以用<input type="hidden"  runat="server" />来保存。执行客户端脚本setInterval("refushEntrust()", 5000)定时刷新分页。其中 refushEntrust()是执行刷新分页的函数。贴出代码来讲解:

ExpandedBlockStart.gif
< input  type ="hidden"  id ="hidLeftPageIndex"  name ="hidLeftPageIndex"  runat ="server"   />
< div  id ="entrust_aspnetPager"  style ="vertical-align:top;" >
< webdiyer:AspNetPager  ID ="AspNetPager1"  runat ="server"   
   onpagechanged
="AspNetPager1_PageChanged"  FirstPageText =""  LastPageText =""  
   NextPageText
=""  NumericButtonCount ="5"  PageSize ="5"  PrevPageText =""  
   ShowBoxThreshold
="100" >
</ webdiyer:AspNetPager >     
</ div >
ExpandedBlockStart.gif
function  refushEntrust() 
{
     
var  pageIndex  =  document.getElementById( ' MainTodayEntrust1_hidLeftPageIndex ' ).value;
     
     
var  pagerList  =  WebUserControls_TradeCenter_MainTodayEntrustControl.AjaxGetEntrustPagerList(pageIndex).value;
     
if  (entrustList  !=   null
     {
         document.getElementById(
' entrust_aspnetPager ' ).innerHTML  =  pagerList;
     }
}

 

没什么好解释的,其中WebUserControls_TradeCenter_MainTodayEntrustControl.AjaxGetEntrustPagerList(pageIndex)是从后台取数据。这个通过AjaxPro2.dll可以实现。

ExpandedBlockStart.gif 代码
[AjaxPro.AjaxMethod]
public string AjaxGetEntrustPagerList(string pageIndex)
{
        _PageIndex 
=  Convert.ToInt32(pageIndex);  // 当前页,首页为1
         int  count;

        GetTodayEntrust(_PageIndex, out count);

        
int  pageCount  =  count  /   5   +  (count  %   5   ==   0   ?   0  :  1 );  // 总页数

        StringBuilder pagerListHtml 
=   new  StringBuilder();
        pagerListHtml.Append(
" <div id=\ " MainTodayEntrust1_AspNetPager1\ "  style=\ " vertical - align:top\ " > " );

        
if  (_PageIndex  ==   1 )   // 当前页是首页,且总页数不止一页
        {
            
if  (pageCount  >  _PageIndex)
            {
                pagerListHtml.Append(
" <span style=\ " margin - right: 5px; font - weight: bold; color: red;\ " >1</span> " );
                
for  ( int  i  =   2 ; i  <=  pageCount; i ++ )
                {
                    
if  (i  <=   5 )
                    {
                        pagerListHtml.Append(
" <a style=\ " margin - right: 5px;\ "  href=\ " javascript:__doPostBack( ' MainTodayEntrust1$AspNetPager1 ' , ' " + i + " ' )\ " > "   +  i  +   " </a> " );  // 总页数不超过五
                    }
                    
else
                    {
                        pagerListHtml.Append(
" <a style=\ " margin - right: 5px;\ "  href=\ " javascript:__doPostBack( ' MainTodayEntrust1$AspNetPager1 ' , ' " + i + " ' )\ " >...</a> " );  // 总页数超过五
                         break ;
                    }
                }
            }
        }
        
else
        {
            
int  j  =  (_PageIndex - 1 ) / 5 * 5;
             if  (j  >   0 // 有前页
            {
                pagerListHtml.Append(
" <a style=\ " margin - right: 5px;\ "  href=\ " javascript:__doPostBack( ' MainTodayEntrust1$AspNetPager1 ' , ' " + j + " ' )\ " >...</a> " );
            }
            
for  ( int  i  =  j  +   1 ; i  <=  j  +   5 ; i ++ )
            {
                
if  (i  !=  _PageIndex)
                {
                    
if  (i  <=  pageCount)
                    {
                        pagerListHtml.Append(
" <a style=\ " margin - right: 5px;\ "  href=\ " javascript:__doPostBack( ' MainTodayEntrust1$AspNetPager1 ' , ' " + i + " ' )\ " > "   +  i  +   " </a> " );
                    }
                }
                
else
                {
                    pagerListHtml.Append(
" <span style=\ " margin - right: 5px; font - weight: bold; color: red;\ " > "   +  i  +   " </span> " );
                }
            }
            
if  (pageCount  >  j  +   5 // 有尾页
            {
                pagerListHtml.Append(
" <a style=\ " margin - right: 5px;\ "  href=\ " javascript:__doPostBack( ' MainTodayEntrust1$AspNetPager1 ' , ' " + (j + 6) + " ' )\ " >...</a> " );
            }
        }

        pagerListHtml.Append(
" </div> " );
        
return  pagerListHtml.ToString();
}

 PS:在测试时,当只有一页数据时(不显示数字1),下多个单,超过一页时,点击页码(比如2),出现脚本错误。这个错误出现在IE6中,IE8,Chrome,FireFox没有这个错误。解决的方法是:在Page_Load事件中对控件AspNetPager1注册回发事件:Page.GetPostBackEventReference(AspNetPager1);原因好像是在IE6中,针对服务器控件的客户端调用__PostBack('AspNetPager1','2'),需要在服务器端声明回发事件才能生效。

 

转载于:https://www.cnblogs.com/purplefox2008/archive/2010/11/23/1885695.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值