我需要在我的网页上进行分页。我使用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; }
}
答案 0 :(得分:1)
需要为所有链接按钮提供ID。 @Hassan Boutougha 在评论中抨击我......
var lb = new LinkButton() { Text = i.ToString(), CssClass = "hrefia" };
lb = "btnId" + i.ToString();
答案 1 :(得分:0)
快速的一点是,根据您的代码首次加载时,您当前的页面索引将返回0。 然后在单个页面点击,如果你点击第2页,返回的当前页面索引将是2,但是如果页面索引从0开始,那么2表示第3页而不是第二页。 所以我想在设置当前页面时你应该这样做:
protected void lb_Click(object sender, EventArgs e)
{
var lb = (LinkButton)sender;
CurrentPage = int.Parse(lb.Text) **- 1**;
bindrepeater();
}