簡體   English   中英

使用數據集的GridView分頁

[英]gridview paging using dataset

我有一個ASP.NET Web應用程序(C#),可以從數據源獲取一些信息並將其顯示在gridview中。 我想啟用分頁,但是由於某種原因,分頁不起作用。 我在網上進行了一些研究,發現使用數據集時分頁的方式有所不同。 當我單擊頁碼時,它會刷新,並說沒有要顯示的記錄。 我將這個功能稱為按鈕的點擊功能:

        bindGrid(cmd);

這是我的綁定方法:

    private void bindGrid(OracleCommand comm)
    {
        OracleDataAdapter adapter = new OracleDataAdapter(comm);
        DataSet ds = new DataSet();

        ds.Tables.Add("Results");
        adapter.Fill(ds.Tables["Results"]);

        grd.DataSource = ds;
        grd.DataBind();
    }

分頁方法:

    protected void grdResults_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        grd.PageIndex = e.NewPageIndex;
        grd.DataBind();
    }

我應該如何對數據集進行分頁? 有人可以幫忙嗎?

您還需要獲取數據:)

所以代替這個:

protected void grdResults_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
    grd.PageIndex = e.NewPageIndex;
    grd.DataBind();
}

您應該使用:

protected void grdResults_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
    grd.PageIndex = e.NewPageIndex;

    //Create command
    bindGrid(comm);

}

取而代之的grd.DataBind()在您的分頁方法調用bindGrid() 或者最好使用一些內置的“業務對象”進行數據綁定,例如ObjectDataSource

執行分頁的最簡單方法是在GridView中設置AllowPaging =“ yes”,並且在后面的代碼中不執行任何操作。 GridView將自行瀏覽其數據集。 不要重新綁定。

這對於小型數據集來說很好,但對於電話簿而言則不太好。 正如Tadas所說,ObjectDataSource是在服務器端自己處理分頁的一種方式。 使用ObjectDataSource,您將根本不需要DataBind。 控件可以處理。 但是,您確實需要在對象上提供Select方法(通常是靜態的),並且它需要具有第一行和頁面大小的參數(將這些參數設置為ObjectDataSource上的屬性)。 因此,您將需要實現Count方法以返回完整的數據集大小。 否則分頁將不起作用。 通過這種方式使用ObjectDataSource,您可以將分頁的負擔轉移到數據層,頁面的加載速度會更快。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM