动态控件单击事件未正确触发

时间:2010-06-07 06:41:23

标签: c# asp.net

我正在使用pageddatasource为我的转发器创建下一个/上一个函数。我使用以下代码在我的oninit中动态添加了链接按钮控件。

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

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

所以在我的初始page_load中,下一个链接就可以了。我的objPagedDataSource中有5个页面。 currentPage变量是1.

“NextPage”事件处理程序如下所示

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();
}

所以我正在递增我用来跟踪页码然后重新绑定转发器的cookie。

这是主要问题。我第一次单击Next,它可以工作,它没有任何问题。当在第2页上时,我单击“下一步”,它将返回到第1页。似乎“下一个”事件未正确连接。不知道为什么,任何想法?

2 个答案:

答案 0 :(得分:1)

您需要确保每次回发都将动态控件添加到Page。动态控件经常会造成很大的痛苦 - 在这种情况下,以正常方式在标记中声明“Next”LinkBut​​ton可能要容易得多,只需在不需要时设置Visible = false

答案 1 :(得分:1)

当您动态加载用户控件时,您必须设置ID属性而不使用ID属性事件不会触发。这是我动态调用用户控件的示例代码

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);
    }
}