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();
    }
}
發佈了1 篇原創文章 · 獲贊 5 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章