datapager分頁問題 (點擊兩次)

來源:互聯網
上載者:User
 

今天看了一下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();
    }
}

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.