datapager分页问题(点击两次)

今天看了一下ListView和DataPager配合做数据分页的教程,感觉很爽很方便,用在自己的项目上面时却出现了问题,具体表现在点击上一页、下一页或者数字跳转页面时通常要点两下才能有反应,而且有时候乱跳页。 

我开始测试的代码是这样的:

public  partial  class  ListViewTest : System.Web.UI.Page
{
    
protected  void  Page_Load( object  sender, EventArgs e)
    {
        
if  ( ! Page.IsPostBack)
            BindData();
    }
    
    
protected  void  BindData()
    {
        DBDataContext db 
=  new  DBDataContext();
        var ds 
=  db.Category;
        ListView1.DataSource 
=  ds;
        ListView1.DataBind();
        db.Dispose();
    }
}

出现如开始提及的问题,找了半天原因也没有找到。后来在国外的一个论坛上找到了同病相怜的人,有专家给出了一个解决方案。把Page_Load里的数据绑定移到Page_PreRender中,也就是:

public  partial  class  ListViewTest : System.Web.UI.Page
{
    
protected  void  Page_Load( object  sender, EventArgs e)
    {
        
// if (!Page.IsPostBack)
        
//     BindData();
    }

    
protected  void  Page_PreRender( object  sender, EventArgs e)
    {
        BindData();
    }
    
    
protected  void  BindData()
    {
        DBDataContext db 
=  new  DBDataContext();
        var ds 
=  db.Category;
        ListView1.DataSource 
=  ds;
        ListView1.DataBind();
        db.Dispose();
    }
}

试了一下分页果然正常了。难道是Page_Load来的太迟?不得而知。另外,还有一种方法同样可行:

public  partial  class  ListViewTest : System.Web.UI.Page
{
    
protected  void  Page_Load( object  sender, EventArgs e)
    {
        
if  ( ! Page.IsPostBack)
            BindData();
    }

    
protected  void  Page_PreRender( object  sender, EventArgs e)
    {
        
// BindData();
    }

    
protected  void  ListView1_PagePropertiesChanging( object  sender, PagePropertiesChangingEventArgs e)
    {
        DataPager1.SetPageProperties(e.StartRowIndex, e.MaximumRows, 
false );
        BindData();
    }

    
protected  void  BindData()
    {
        DBDataContext db 
=  new  DBDataContext();
        var ds 
=  db.Category;
        ListView1.DataSource 
=  ds;
        ListView1.DataBind();
        db.Dispose();
    }
}

你可能感兴趣的:(PAGER)