我已經創建了一個自定義分頁類 - Pagger
- 爲實現分頁控件的分頁。自定義分頁回傳後讀取動態控件的值
現在,Pagger
對象生成包含導航btns一個ASP:Panel
- ASP:LinkButton
- 即負責導航,每個BTN它裏面存儲產生的pageNumber
它必須導航到
實施例:
爲了增強分頁功能,我使用了Ajax - ASP:UpdatePanel
- 來圍繞paging panel
,
現在,每個btn's click
一PostBack
發生,所以我重新創造了所有的btns
在OnPreInit
頁面事件,讓他們可以再次使用 - 即是明顯的,而不是將以下問題
protected override void OnPreInit(EventArgs e)
{
Pagger p = new Pagger(itemsCount, itemsPerPage);
//Here the pager reads from viewstate to know
//which pageNumber is the currentPage and generates btns according to it
p.GeneratePaggerPanel(CurrentPageNumber);
Panel1.Controls.Add(p.PaggerPanel);
//link the LinkBtn to event handler to be executed upon clicking
foreach (Control c in p.PaggerPanel.Controls)
{
if (c is LinkButton)
{
((LinkButton)c).Click += Button1_Click;
}
}
base.OnPreInit(e);
}
現在,爲了知道哪些pageNumber
當re-creating
日是currentPageNumber
我去把它存儲在ViewState
public uint CurrentPageNumber
{
get
{
if (ViewState["CurrentPageNumber"] != null)
return (uint)ViewState["CurrentPageNumber"];
return 1;
}
set
{
ViewState["CurrentPageNumber"] = value;
}
}
protected void Button1_Click(object sender, EventArgs e)
{
CurrentPageNumber = ((PaggerLinkButton)sender).Tag;
}
但btnEvent Click
觸發page_load
後,多數民衆贊成意味着ViewState
不會是可用Ëpager btns
在OnPreInit
事件
我怎麼能設置由初始化pager btns panel
,使尋呼機可以使用相同的PostBack
的currentPageNumber
而不要等到做另一PostBack
前閱讀pressed btn's value
的ViewState
價值?
我也讀過ASP.NET Page Life Cycle Overview,但沒有什麼幫助。
P.S .:的PaggerLinkButton
從LinkButton
繼承了一個新的屬性Tag