【问题标题】:create dynamic asp.net button in code behind but render in specific place on aspx page在后面的代码中创建动态 asp.net 按钮,但在 aspx 页面上的特定位置呈现
【发布时间】:2011-07-14 16:31:54
【问题描述】:

在后面的代码中创建一个动态按钮:

Dim b As Button = New Button()
b.Text = "Some Dynamic Text Here"
b.PostBackUrl = "some_page.asx"

我希望能够在 aspx 页面上的特定位置呈现它。

在aspx页面,我想做的:

<td>
<%
If (specific condition) Then
    'render that specific button here <---------
Else
    'render something else
End If 
%>
</td>

1 - 我知道能够做一个

Page.Form.Controls.Add(dynamic button here)

但我无法将其添加到页面上的特定位置(即使使用 CSS 也不行,因为按钮将进入表格 - 表格有一列数字,如果非零,按钮将显示跨页回发显示向下钻取的项目)

【问题讨论】:

  • 一般来说,使用动态控件会变得很棘手,并且 Viewstate 会成为一个大问题。我强烈建议使用 Visible 属性隐藏/显示控件,即使您将它们分组到另一个控件中,例如 asp:Panel
  • 但是如何动态设置正在创建的静态按钮的文本?
  • 使用 asp:Buttonasp:LinkButton, myButton.Text = "blahblah"; ,就像您在上面所做的那样。
  • 对,但是如何引用正在创建的特定按钮?在 aspx 页面中,done

标签: asp.net dynamic controls


【解决方案1】:

您可以在希望按钮所在的位置放置一个占位符

<asp:PlaceHolder ID="placeHolder" runat="server"></asp:PlaceHolder>

并在代码中添加按钮

If (specific condition) Then   
    placeHolder.Controls.Add(b) 

【讨论】:

  • 我已经看到了方法/方法,但是如何在后面的代码中引用占位符?我需要能够创建具有动态 id 的占位符,因此在代码隐藏中,我可以将其添加到正确的占位符
  • 那么您想要带有动态按钮的动态占位符吗?我认为您需要找到一个更简单的解决方案
  • 你能推荐一个吗?查看报告表,对于数字 0,查看特定数据(即 2011 年 7 月 1 日,100 个小部件;2011 年 7 月 2 日,0 个小部件)100 个小部件是可点击的。我可以创建一个带有查询字符串的 URL 来传递值以检索这 100 个小部件,但跨页面回发似乎是更好的解决方案(因为我不必为值等解析字符串)
  • 绑定到 asp:Repeater 控件并将按钮/数据放入其项目模板中
  • 在查看了中继器控件后,似乎问题仍然存在,当我将其放入项目模板时,我将无法创建具有动态 ID 的按钮......我认为解决方案我我要做的(尝试)是(现在才想出来)创建一个html按钮,动态设置id,添加javascript,所以当它被点击时,它会改变表单位置并提交表单,以便将它发布到我的页面希望它跨页回发到...“获胜!”
猜你喜欢
  • 2016-01-16
  • 1970-01-01
  • 1970-01-01
  • 2018-01-08
  • 1970-01-01
  • 2014-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多