如何将代码中创建的控件放在页面上?

时间:2012-07-24 22:48:22

标签: c# asp.net

protected void Page_Load(object sender, EventArgs e)
{

Label myLabel = new Label();
myLabel.Text = "Testing 1 2 3";
}

如果我在后面的代码中创建这个Label对象,它没有< asp:标签>在主页上标记,如何将此标签放在页面的某个位置?

我想根据数据库中的信息动态创建控件。从那里,我想将控件放在网页上。我无法为它们预定义位置,因为控件的数量和类型会发生变化。

最好的方法是什么?

如果我的页面上已有某些内容(例如表格),并且我希望在表格结束后放置控件,该怎么办。

2 个答案:

答案 0 :(得分:4)

您必须将其添加到页面的控件集合中。

this.Controls.Add(myLabel);

我可以使用PlaceHoldersPanels作为容器控件,而不是直接将其添加到页面中。您需要在page_load中的每个回发中重新创建动态创建的控件,并且具有与之前相同的ID(重新加载ViewState并触发事件)。

您应该使用CSS来控制控件的布局。

另一种方法是使用类似Repeater的{​​{3}}更容易,并自动维护控件及其状态。

答案 1 :(得分:0)

如果您使用占位符,则可以根据需要添加任意数量的控件。如果为每个控件分配一个CSS,则可以轻松地将控件放在页面上的任何位置。

Label myLabel = new Label();
myLabel.Text = "Testing 1 2 3";
myLabel.cssClass ="myClass1"
Label myLabel2 = new Label();
myLabel2.Text = "Testing 4 5 6";
myLabel2.cssClass ="myClass2"
plHolder.controls.add(myLabel)
plHolder.controls.add(myLabel2)