【问题标题】:Dynamic control click event not firing properly动态控件点击事件未正确触发
【发布时间】:2023-03-22 01:36:01
【问题描述】:

我正在使用 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,然后重新绑定转发器。

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

【问题讨论】:

  • 当您添加该控件时,您是否在 IsPostBack 检查中执行此操作? if (!IsPostBack) { }
  • 不做回发检查

标签: c# asp.net


【解决方案1】:

您需要确保在每次回发时都将动态控件添加到页面。动态控件通常会带来很多麻烦 - 在这种情况下,以正常方式在标记中声明“下一个”链接按钮可能会容易得多,并且在不需要时只需设置 Visible = false

【讨论】:

  • 谢谢,这让我找到了正确设置回发控件的方法,谢谢!
【解决方案2】:

当您动态加载用户控件时,您必须设置没有 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);
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-11
    • 2014-01-15
    • 1970-01-01
    • 1970-01-01
    • 2013-06-03
    相关资源
    最近更新 更多