0

我正在尝试使用创建表的中继器来实现分页。我遇到的问题是我在 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("&gt;&gt;", "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;
    }
4

2 回答 2

1

检查在页面生命周期中何时调用 CreatePaging() 方法。它需要在 Page_Init 或 Page_Load 期间调用。

如果在此之后调用它,那么在 ASP.NET 处理回调时控件将不会被创建,并且它不知道将按钮单击事件传递给哪个处理程序。

于 2013-05-30T13:54:25.043 回答
0

在标记中的中继器上,您可以添加 OnItemCommand="rptMystuff_ItemCommand"

在你的下一页 Button / LinkBut​​ton 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); }
      }
于 2013-05-30T13:54:11.920 回答