asp.net中的datalist自定义分页

时间:2011-10-18 08:13:02

标签: asp.net

我正在为datalist.Below方法进行自定义分页获取所需的页码。 我的问题是在调试期间没有触发click事件。 任何人都可以解决问题所在。

 private void BindPageNumbers(int TotalRecords)
            {

                int counter = 0;
                for(int i=0;i<TotalRecords;i=i+5)
                {
                    counter=counter+1;
                    LinkButton lnk = new LinkButton();
                    lnk.Click += new EventHandler(lbl_click);
                    lnk.ID = "lnkPage" + (counter).ToString();
                    lnk.Text = (counter).ToString();
                    pages.Controls.Add(lnk);
                    Label spacer = new Label();
                    spacer.Text = "&nbsp;";
                    pages.Controls.Add(spacer);
                }                
            }
void lbl_click(object sender, EventArgs e)
        {
            LinkButton lnk = sender as LinkButton;
            int Currentpage = int.Parse(lnk.Text);
            ListDataBinding_paging(2, this.Days, (Currentpage-1)*5, 5);
        }

此处“ListDataBinding_paging”是填充数据列表的方法。

1 个答案:

答案 0 :(得分:0)

您正在动态创建页面链接按钮。因此,它们需要在生命周期的早期每个回发中重新创建。我怀疑在处理事件后数据后会调用BindPageNumbers,因此不会生成click事件。

我建议您在BindPageNumbers中调用page_load,以便在生命周期的早期创建按钮。您可以将总记录数存储在视图状态中。如果page_load无效,请尝试LoadViewState覆盖 - 在调用基本实现后输入代码 - 类似于

protected override void LoadViewState(Object savedState) {    base.LoadViewState(savedState);    BindPageNumbers((INT)的ViewState [ “总记录”]); }