我正在尝试使用创建表的reapeter实现分页。 我遇到的问题是我在tr中添加了按钮,但是当我点击它们时,如果我在其点击处理程序中放置一个断点,则没有任何反应。
创建按钮
private void CreatePaging(PlaceHolder literal)
{
int numPage = (totalItems / ITEMS_PER_PAGE);
if (totalItems % ITEMS_PER_PAGE > 0) numPage++;
literal.Controls.Add(CreateButton("<<", "b"));
for (int i = 0; i < numPage; i++) {
if (currentPageIndex == i)
{
Label lbl = new Label();
literal.Controls.Add(lbl);
lbl.Text = " " + (i + 1).ToString() + " ";
}
else {
literal.Controls.Add(CreateButton((i+1).ToString(), (i+1).ToString()));
}
}
literal.Controls.Add(CreateButton(">>", "f"));
}
LinkButton CreateButton(string title, string index) {
LinkButton lnk = new LinkButton();
lnk.ID = index.ToString();
lnk.Text = title;
lnk.CommandArgument = index.ToString();
lnk.Click += new EventHandler(PageBtnClicked);
return lnk;
}
答案 0 :(得分:1)
检查在页面生命周期中何时调用CreatePaging()方法。它需要在Page_Init或Page_Load中调用。
如果在此之后调用它,则ASP.NET处理回调时不会创建控件,并且它不知道将按钮单击事件传递给哪个处理程序。
答案 1 :(得分:0)
在标记中的Repeater上,您可以添加OnItemCommand =“rptMystuff_ItemCommand”
在你的下一页Button / LinkButton CommandName =“NextPage”
然后在你的代码中
protected void rptMyStuff_ItemCommand(object sender, RepeaterCommandEventArgs e)
{
if (e.CommandName == "NextPage")
{
//Code to switch pages
}
if (e.CommandName == "PreviousPage")
{
//More code
}
}
编辑:
哦,至于记住你所在的页面,也可以存储在网页上的HiddenField中。像
这样的东西 public int PageNum
{
get { return string.IsNullOrEmpty(hfPageNum.Value) ? 0 : int.Parse(hfPageNum.Value); }
set { hfPageNum.Value = value.ToString(CultureInfo.InvariantCulture); }
}