[英]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.