当前位置导航:炫浪网>>网络学院>>网页制作>>ASP.NET教程

以编程方式动态向ASP.NET 网页添加控件

  有时,在运行时创建控件比在设计时创建控件更可行。 例如,假定有一个搜索结果页,您要在其中将以表的形式显示结果。 由于不知道要返回多少项,因此您需要每个返回的项动态生成一个表行。

  说明

  现有控件通常可以提供从动态创建控件中获得的功能。 例如,Repeater、DataList 和 RadioButtonList 控件可以在页运行时动态创建行或其他控件元素。

  要通过编程向页添加控件,则必须有放置新控件的容器。 例如,如果您打算创建表行,那么容器就是表。 如果没有明显的控件用作容器,可以使用PlaceHolder 或 Panel Web 服务器控件。

  在某些情况下,可能需要既创建静态文本又创建控件。 要创建静态文本,可以使用 Literal 或 Label Web 服务器控件。 然后可以将这些控件像其他控件一样添加到容器中。 有关运行时所创建控件的视图状态的信息,请参见动态 Web 服务器控件和视图状态。

  重要事项

  通过编程方式将控件添加到 Web 网页

  创建控件的实例并设置其属性,如下面的示例所示:

  Label myLabel = new Label();myLabel.Text = "Sample Label";

  说明

  控件通常在页的初始化阶段添加到页中。 有关页阶段的详细信息,请参见 ASP.NET 页生命周期概述。

  将新控件添加到页上已有容器的 Controls 集合中,如下面的示例所示:

  Panel Panel1= new Panel();

  Panel1.Controls.Add(myLabel);

  说明

  因为 Controls 属性是一个集合,您可以使用 AddAt 方法在特定位置放置新控件,例如在其他控件的前面。 但是这将会在页中引入错误。有关详细信息,请参见动态 Web 服务器控件和视图状态。

  下面的代码示例演示名为 DropDownList1 的控件的 SelectedIndexChanged 事件的事件处理程序。 该处理程序创建的标签 (Label) 控件的数量和用户从下拉列表中所选的数量相同。 这些控件的容器是名为 Placeholder1 的 PlaceHolder Web 服务器控件。

  安全说明

  网页中的用户输入可能包括潜在有害的客户端脚本。 默认情况下,ASP.NET 网页验证用户输入是否不包括脚本或 HTML 元素。 有关更多信息,请参见 脚本侵入概述。

  private void DropDownList1_SelectedIndexChanged(object sender, System.EventArgs e)

  {

  DropDownList DropDownList1 = new DropDownList();

  PlaceHolder PlaceHolder1 = new PlaceHolder();  // Get the number of labels to create.

  int numlabels = System.Convert.ToInt32(DropDownList1.SelectedItem.Text);

  for (int i=1; i<=numlabels; i++)

  {

  Label myLabel = new Label();   // Set the label's Text and ID properties.

  myLabel.Text = "Label" + i.ToString();

  myLabel.ID = "Label" + i.ToString();

  PlaceHolder1.Controls.Add(myLabel);   // Add a spacer in the form of an HTML <br /> element.

  PlaceHolder1.Controls.Add(new LiteralControl("<br />"));

  }

  }

相关内容
赞助商链接