リストコントロールのページングを実装するためにカスタムページングクラス(Pagger
)を作成しました。カスタムページングのPostBackの後のダイナミックコントロールの値を読み取る
今、Pagger
オブジェクトナビゲーションbtnsが含まASP:Panel
生成 - ASP:LinkButton
- それが
例にナビゲートしなければならないpageNumber
内部記憶BTN生成された各ナビゲーションを担当する:
私はAjax-ASP:UpdatePanel
を使用してページングを強化するため、それぞれpaging panel
,
をそれぞれ囲みます。btn's click
PostBack
が起こるので、私は再作成されたすべてのbtns
OnPreInit
のページイベントを彼らが明白である - つまり、再び利用できるようにする、そしてそれがpageNumber
を知るために、今question-
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);
}
、ではありません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
で、私はそれを格納するために行ってきましたcurrentPageNumber
はpage_load
後、thatsのは、ときre-creating
番目ViewState
が利用できるように文句を言わないわけトリガされますOnPreInit
イベントの電子pager btns
は
はどのように私はpager btns panel
ので、ページャは同じPostBack
でcurrentPageNumber
を使用することができますし、別のPostBack
を行うには待っていない初期化する前にpressed btn's value
を読み取ることでViewState
値を設定することができますか?
私はASP.NET Page Life Cycle Overviewも読んだことがありますが、何も本当に助けになりませんでした。
P.S:PaggerLinkButton
は、あなたはオプションのカップルを(私はオフに考えることができることを)持っているつの新しいプロパティを持つLinkButton
Tag