0

我试图将按钮添加到占位符,每个按钮都有一个事件处理程序到相同的方法。

        if (!this.IsPostBack)
        {

                foreach (Entry ent in results)
                {
                    HtmlButton btn = new HtmlButton();
                    btn.ServerClick += new EventHandler(resultSelected);
                    btn.InnerText = ent.name;
                    btn.ID = ent.ID.ToString();
                    PlaceHolder1.Controls.Add(btn);
                }
       }

1)按钮被添加到页面但是当它被点击时方法(resultSelected)没有被调用,只有Page_Load再次被调用。当它进入 Page_Load 时, PlaceHolder 是空的(按钮不显示在页面上)。我该如何完成我试图做的事情?

2) 如何将 CSS 类分配给以这种方式创建的按钮?

4

1 回答 1

2

当您第一次开始使用 ASP.NET 时,这是很常见的问题 - 在服务器端添加动态控件。

  1. 首先,您必须在每个页面请求上添加这些控件并分配事件处理程序 - 在每个回发时也是如此。为了正确处理和恢复 ViewState,您必须为它们分配相同的 ID 并应用相同的层次结构。
  2. 控件需要在页面加载事件之前添加 - 最方便的是在覆盖方法中添加它们,该方法在before方法CreateChildControls()中触发。PostbackOnLoad
  3. 事件在 OnLoaded 方法之后触发,因此如果您将在例如OnPreRender/Render方法中创建任何控件 - 任何事件都不会被触发。

这是最直接的方法,在我的描述中跳过了一些细节。有关更多详细信息,请阅读有关 ASP.NET 应用程序生命周期的信息。

至于问题的第二部分,您可以使用Style Property的显式样式设置,也可以使用Attributes Property添加类属性,但现在我猜,因为我认为 HtmlButton 没有CssClass属性.

于 2012-10-31T20:02:08.353 回答