Wil
Wil

Reputation: 2358

Dynamic control click event not firing properly

I'm creating a next/previous function for my repeater using pageddatasource. I added the link button control dynamically in my oninit using the following code.

LinkButton lnkNext = new LinkButton();
lnkNext.Text = "Next";
lnkNext.Click += new EventHandler(NextPage);

if (currentPage != objPagedDataSource.PageCount)
{
    pnlMain.Controls.Add(lnkNext);
}

So in my initial page_load, the next link comes up fine. There are 5 pages in my objPagedDataSource. currentPage variable is 1.

The "NextPage" event handler looks like this

public void NextPage(object sender, EventArgs e)
{
    if (HttpContext.Current.Request.Cookies["PageNum"] == null)
    {
        HttpCookie cookie = new HttpCookie("PageNum");
        cookie.Value = "1";
    }
    else
    {
        HttpCookie cookie = HttpContext.Current.Request.Cookies["PageNum"];
        cookie.Value = (Convert.ToInt32(cookie.Value) + 1).ToString();
    }

    this.BindRepeater();
}

So I am incrementing the cookie I am using to track the page number and then rebinding the repeater.

Here is the main issue. The first time I click Next, it works, it goes to Page 2 without any problems. When on Page 2, I click Next, it goes back to Page 1. Seems like the Next event is not wiring up properly. Not sure why, any ideas?

Upvotes: 0

Views: 2230

Answers (2)

vishnu vardhan Reddy
vishnu vardhan Reddy

Reputation: 11

While you are loading user controls dynamically you must set ID property without ID property Events will not fire.This is My sample code to call user controls dynamically

private void LoadUserControl()
{
    string controlPath = LastLoadedControl;

    if (!string.IsNullOrEmpty(controlPath))
    {
        PlaceHolder1.Controls.Clear();
        UserControl uc = (UserControl)LoadControl(controlPath);
        uc.ID = "uc";  //Set ID Property here
        PlaceHolder1.Controls.Add(uc);
    }
}

Upvotes: 1

Graham Clark
Graham Clark

Reputation: 12966

You need to ensure you're adding your dynamic control to the Page every postback. Dynamic controls often cause much pain - in this case it would probably be much easier to declare the "Next" LinkButton in the markup in the normal way, and just set Visible = false when it isn't required.

Upvotes: 1

Related Questions