我想什么:添加ASP控件以编程方式添加的内容
在理想的情况下,我将能够创建具有oncommand
和commandargument
属性的锚,但如果我没有记错,不工作,你必须创建一个控件,比如一个按钮,它可以工作。然后我的问题来自于希望将该按钮放置在页面上的每个项目上,因为我需要一些东西来添加控件,但是如果我创建了一个带有runat="server"
和id="try"
的锚点,我不能这么做:try.Controls.Add(button)
因为'try'的锚点实际上还没有创建。
背景:
大多数内容都以编程方式添加。一个stringbuilder被用来创建一个html页面显示的字符串。是否可以添加一个控件到页面中间的这个字符串?或成为一个以这种方式编程添加的元素?
我曾尝试:
创建锚(或其它方式)和定位这些元件的id
然后创建一个按钮如下,但是,因为该元素被编程方式添加并会有所不同,在id
所需的数则s会try0,try1等:
var button = new Button {
CommandArgument = "test",
Text = "Try"
};
button.Command += bt_sendMail_tryDevice_Click;
try.Controls.Add(button);
所以我尝试以下,凡在我的aspx页面我与id="try"
这样一个“虚拟”元素,它不抱怨的变化,但我明白为什么它不喜欢它,同时虽然我不知道如何解决它。 (tryCount是一个随着每次迭代而增加以保持id唯一的int)。
this.FindControl(try.ToString() + tryCount.ToString()).Controls.Add(button);
'ASP:PlaceHolder'是专为这种使用情况。在控件添加到它之前不会呈现(通常以编程方式)。 –
但我无法以编程方式添加占位符吗?我目前在一个固定的位置使用了一个占位符,但在这里我需要另一个占位符,用于页面上的每一行。 – dudledok
你是指“页面上的每一行”是什么意思?你有网格视图吗?中继?你可以添加一个'LinkButton'到项目模板吗? – Jay