簡體   English   中英

使用PagedDatasource在DataList中分頁

[英]Paging in DataList using PagedDatasource

我正在使用asp.net頁面。 我正在使用DataList控件。 我看到此控件沒有分頁模板,所以我正在使用PagedDataSource控件(第一次)。 我需要顯示上一頁,下一頁和編號頁面,例如:

previous 1 2 3 4 5 next  View ALL

到目前為止,這是我所做的:

protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {

            PagedDataSource pg = new PagedDataSource();
            pg.DataSource = HRCompany.GetList().DefaultView;

            pg.AllowPaging = true;
            pg.PageSize = 8;
            CompaniesDataList.DataSource = pg;
            CompaniesDataList.DataBind();
        }
    }

    public int CurrentPage
    {
        get
        {
            // look for current page in ViewState
            object o = this.ViewState["_CurrentPage"];
            if (o == null)
                return 0; // default page index of 0
            else
                return (int)o;
        }

        set
        {
            this.ViewState["_CurrentPage"] = value;
        }
    }


    private void cmdPrev_Click(object sender, System.EventArgs e)
    {
        // Set viewstate variable to the previous page
        CurrentPage -= 1;

        // Reload control
        PagedDataSource pg = new PagedDataSource();
        pg.DataSource = HRCompany.GetList().DefaultView;
        CompaniesDataList.DataSource = pg;
        CompaniesDataList.DataBind();
    }

    private void cmdNext_Click(object sender, System.EventArgs e)
    {
        // Set viewstate variable to the next page
        CurrentPage += 1;

        // Reload control
        PagedDataSource pg = new PagedDataSource();
        pg.DataSource = HRCompany.GetList().DefaultView;
        CompaniesDataList.DataSource = pg;
        CompaniesDataList.DataBind();
    }

但我看不到單擊上一頁或下一頁按鈕的下一頁。 另外,如果用戶單擊查看全部,如何顯示基於記錄的頁碼並顯示所有記錄。 另外,是否需要更改存儲過程以允許分頁?

我的存儲過程如下所示:

ALTER PROCEDURE [dbo].[hr_Companies_GetByIDAndName]

    @CompanyID INT,
    @CompanyName VARCHAR(100),
    @Lang int = 1

AS

BEGIN

    SET NOCOUNT ON;



    SELECT C.*

    FROM dbo.hr_Companies C 

    WHERE C.Deleted = 0 
    AND C.CompanyID = @CompanyID
    AND @CompanyName = CASE WHEN @Lang = 1 then NameLang1 ELSE NameLang2 END
END

請提出建議。

兄弟

您的有趣問題迫使我在工作時編譯和解決您的代碼問題:)解決方案如下:

     PagedDataSource pg = null;
        protected void Page_Init(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                pg = new PagedDataSource();

            }
        }

      protected void Page_Load(object sender, EventArgs e)
            {
       if (!IsPostBack)
                {


                    pg.DataSource = dt.DefaultView;
                    pg.AllowPaging = true;
                    pg.PageSize = 2;



                    dlPagedControl.DataSource = pg;

                    Session["DataTable"] = dt;  //dt is just a  datatable replace it with whatever you need
                    Session["CurrentPage"] = pg.CurrentPageIndex;

                    dlPagedControl.DataBind();

                }
    }


       protected void cmdPrev_Click(object sender, EventArgs e)
            {

                if(int.Parse(Session["CurrentPage"].ToString())!=0)
                {
                if (pg == null)
                {
                    pg = new PagedDataSource();
                    pg.PageSize = 2;
                    pg.AllowPaging = true;
                }
                pg.DataSource = (Session["DataTable"] as DataTable).DefaultView;


                pg.CurrentPageIndex = (int.Parse(Session["CurrentPage"].ToString())) - 1;

                dlPagedControl.DataSource = pg;
                dlPagedControl.DataBind();
                Session["CurrentPage"] = pg.CurrentPageIndex;

                  lable1.Text=pg.CurrentPageIndex;
                }





            }
     protected void cmdNext_Click_Click(object sender, EventArgs e)
            {


                if (pg == null)
                {
                    pg = new PagedDataSource();
                    pg.PageSize = 2;
                    pg.AllowPaging = true;
                }
                pg.DataSource = (Session["DataTable"] as DataTable).DefaultView;
               pg.CurrentPageIndex = (int.Parse(Session["CurrentPage"].ToString())) + 1;

                dlPagedControl.DataSource = pg;
                dlPagedControl.DataBind();
                Session["CurrentPage"] = pg.CurrentPageIndex;
//show Current Page in Label
lable1.Text=pg.CurrentPageIndex;
            } 

暫無
暫無

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

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