我已经创建了一个自定义分页类 - 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