动态添加的 LinkButton 不会触发 OnClick 事件

问题描述 投票:0回答:2

我需要在我的网页上进行分页。我使用 PagedDataSource 来实现它。但我需要在 .aspx 上枚举页面,因此我动态地将

LinkButtons
添加到
PlaceHolder
并为所有页面编写一个
Eventhandler
。它显示并工作正常。第一次点击
Eventhandler
时会被触发。第二次它不点火。第三个是。等等...有什么想法吗?

    protected void Page_Load(object sender, EventArgs e)
    {
        bindrepeater();
    }


    private void bindrepeater()
    {
        var service = new Service();
        var coll = service.GetPeople();

        PagedDataSource Pds1 = new PagedDataSource();
        Pds1.DataSource = coll;
        Pds1.AllowPaging = true;
        Pds1.PageSize = 10;
        Pds1.CurrentPageIndex = CurrentPage;

        Repeater1.DataSource = Pds1;
        Repeater1.DataBind();

        var count = (coll.Count / 10) + 1;
        pages.Controls.Clear();
        for (int i = 1; i < count; i++)
        {
            var lb = new LinkButton() { Text = i.ToString(), CssClass = "hrefia" };
            lb.Click += new EventHandler(lb_Click);
            pages.Controls.Add(lb);
        }
    }

    protected void lb_Click(object sender, EventArgs e)
    {
        var lb = (LinkButton)sender;
        CurrentPage = int.Parse(lb.Text);
        bindrepeater();
    }

    public int CurrentPage
    {
        get
        {
            object s1 = this.ViewState["CurrentPage"];
            if (s1 == null)
            {
                return 0;
            }
            else
            {
                return Convert.ToInt32(s1);
            }
        }
        set { this.ViewState["CurrentPage"] = value; }
    }
c# asp.net .net dynamic pagination
2个回答
1
投票

需要为所有链接按钮提供 ID。 @Hassan Boutougha 在评论中回答了我...

var lb = new LinkButton() { Text = i.ToString(), CssClass = "hrefia" };
lb = "btnId" + i.ToString();

0
投票

快速一点,根据您的代码第一次加载时,您当前的页面索引将返回为 0。 然后在后续页面单击时,例如单击第 2 页,返回的当前页面索引将为 2,但是如果页面索引以 0 开头,则 2 表示第 3 页而不是第 2 页。 所以我想在设置当前页面时你应该执行以下操作:

protected void lb_Click(object sender, EventArgs e)
{   
    var lb = (LinkButton)sender;      
    CurrentPage = int.Parse(lb.Text) **- 1**;
    bindrepeater();   
}
© www.soinside.com 2019 - 2024. All rights reserved.