Linkbutton inside Repeater for paging ASP.Net

17,321

You're looking for the ItemCommand event:

  <asp:Repeater ID="Repeater1" OnItemCommand="ItemCommand" runat="server">
    <ItemTemplate>
      <asp:LinkButton CommandName="ButtonEvent" CommandArgument="<%# Container.DataItem %>" Text="<%#Container.DataItem %>" runat="server"></asp:LinkButton>
    </ItemTemplate>
  </asp:Repeater>

Code behind:

protected void Page_Load(object sender, EventArgs e)
{
  if (!Page.IsPostBack)
  {
    Repeater1.DataSource = Enumerable.Range(1, 10);
    Repeater1.DataBind();
  }
}

protected void ItemCommand(Object Sender, RepeaterCommandEventArgs e)
{
  Response.Write("The no. " + ((LinkButton)e.CommandSource).Text + " button was clicked!");
}

... but are you really sure you need the LinkButton? A plain HTML anchor tag might work just as fine, and it's less fuzz. :)

Share:
17,321
Gerardo Abdo
Author by

Gerardo Abdo

Updated on June 04, 2022

Comments

  • Gerardo Abdo
    Gerardo Abdo almost 2 years

    I'm doing a webpage with a search that brings a lot of information from MSSQL. What I did is a stored procedure that return only the page to be seen on the website.

    Right now I'm working on the paging as I need to show something similar than google. If you are at page 1 they show first 10 pages and if you are at page 19 they show since page 9 to 28.

    I think the best option to show the page numbers is using a linkbutton inside a repeater. The problem that I have now is that I do not know the best way to take the page number at postback.

    Doing a quick sample I assigned an ArrayList to repeater.datasource:

      <asp:Repeater ID="Repeater2" runat="server">
        <ItemTemplate>
                <asp:LinkButton ID="LinkButton1" runat="server" CommandArgument="<%# Container.DataItem %>"><%# Container.DataItem %></asp:LinkButton>
        </ItemTemplate>
      </asp:Repeater>
      <asp:LinkButton ID="LinkButton2" runat="server" CommandArgument="4654">Test #1</asp:LinkButton>
    

    At my Default.aspx.cs file I have the next code

        protected void Page_Load(object sender, EventArgs e)
        {
            if (this.IsPostBack)
            {
                string x = LinkButton2.CommandArgument;
                //string y = LinkButton1.CommandArgument;
    //I know this line will not work since the Linkbutton1 is inside the Repeater.
                }
    

    What Shall I do to make it works?

    Does anyone has a better solution for this paging?

    Thank you

    Jerry

  • Gerardo Abdo
    Gerardo Abdo about 14 years
    What I have seen is that Datapager needs a control assigned to automatically paging and for that I need to bring all the registers from the DB and to make it quicker I want to return just what will be shown
  • Gerardo Abdo
    Gerardo Abdo about 14 years
    Well, the problem with using an automatic pagging is that I need to bring all the registers from the DB and to make it quicker I want to return just what will be shown ;)
  • Sneha
    Sneha about 14 years
    You're welcome, glad to help. Don't forget to mark select an accepted answer for your questions. :)
  • mistertodd
    mistertodd almost 12 years
    Thank you for this Jakob. The answer deserves to be accepted.