【问题标题】:Dynamic control not showing up on page动态控件未显示在页面上
【发布时间】:2015-03-25 20:19:06
【问题描述】:

这相对简单,但我显然错过了一步,无法找到解决我的问题的支持。

我只是想将一个动态创建的控件附加到我的页面,但这并没有发生。这是我正在做的精简版:

Button button = new Button();
button.Click += new EventHandler(btnTakeAction_Click);
button.Text = "Take Action";
button.ID = "btnTakeAction";
fullPayOnlyCoupon = string.Format(
    "<div>Some random text. I want my control to show up here: {0}</div>", button);

假设btnTakeAction_Click 是有效的。另外,我知道这不会正确显示按钮,而是将其呈现为WebControl.Button 之类的东西。但这就是我正在寻找的想法:按钮显示在字符串中动态创建的标记中的特定位置。据我了解,您必须将此按钮控件添加到页面上已经存在的另一个预先存在的控件中。所以我试过这个:

Button button = new Button();
button.Click += new EventHandler(btnTakeAction_Click);
button.Text = "Take Action";
button.ID = "btnTakeAction";
ControlOnAspxPage.Controls.Add(button);

ControlOnAspxPage 不会呈现我动态创建的按钮。

【问题讨论】:

  • (1)ControlOnAspxPage的类型是什么? (2) 你在哪里(Page_Load 可能)运行该代码?
  • 您是否尝试将“ControlOnAspxPage”作为面板。并且还要确保你没有自动重定向/刷新页面,这会导致控件快速消失,因为它是一个动态控件。您的其余代码“在我的系统上”运行良好!

标签: c# asp.net code-behind web-controls


【解决方案1】:

尝试使用Placeholder control:

<asp:PlaceHolder
  EnableTheming="True|False"
  EnableViewState="True|False"
  ID="string"
  OnDataBinding="DataBinding event handler"
  OnDisposed="Disposed event handler"
  OnInit="Init event handler"
  OnLoad="Load event handler"
  OnPreRender="PreRender event handler"
  OnUnload="Unload event handler"
  runat="server"
  SkinID="string"
  Visible="True|False"
/>

与:

myButton = new HtmlButton();
myButton.InnerText = "Button 2";
PlaceHolder1.Controls.Add(myButton);

【讨论】:

  • 嗨,您不需要在占位符中添加动态控件,您可以将动态控件添加到您想要的每个现有控件;-)
【解决方案2】:

您必须每次在Page_Load 事件中创建动态控件。 这是一个解释: http://www.codeproject.com/Articles/8114/Dynamically-Created-Controls-in-ASP-NET

【讨论】:

    猜你喜欢
    • 2020-12-31
    • 2020-01-14
    • 1970-01-01
    • 2022-01-10
    • 1970-01-01
    • 1970-01-01
    • 2022-08-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多