Visual Basic 8 (2005)WebFormsVisual Studio 2005.NET 2.0中级开发Visual StudioWindows.NETVisual BasicASP.NET
动态添加 ASP.NET 控件并保持它们






2.43/5 (7投票s)
2007 年 7 月 5 日
1分钟阅读

36187

438
动态添加 ASP.NET 控件并保持它们
引言
我在网上看到很多关于在 ASP.NET 页面中动态生成控件并在回发后保留它们的文章。但所有这些文章似乎都相当复杂。我只是想让整个过程稍微简单一些。所以请检查一下,看看这是否是一种更简单的方法。
我应该告诉你动态生成控件的步骤
- 在 aspx 页面中添加一个
Table/Div
容器 - 在代码隐藏文件中,将控件 ID 的集合作为 Viewstate 支持的属性。我在这里使用了泛型 List,即
List(Of String)
- 在“添加控件”按钮的单击事件处理程序中,将新的 ID 添加到此列表中。确保这些 ID 是唯一的
- 在
Page_PreRender
中,根据这些唯一的 ID 生成控件
使用代码
要在回发事件中添加控件(例如,单击按钮),我们必须在代码中生成该控件。然后将其添加到已经存在于 aspx 页面中的容器(如 div 或 table)中。就像代码中的 CreateATableRow
函数那样
Dim rowAdditional As New TableRow()
rowAdditional.ID = textName + "ROWID"
Dim cellAdditinal As New TableCell()
cellAdditinal.ID = textName + "CELLID"
Dim textAdditional As New TextBox()
textAdditional.ID = textName + "TEXTID"
textAdditional.Text = textName
''add textbox to celll
cellAdditinal.Controls.Add(textAdditional)
'add cell to row
rowAdditional.Controls.Add(cellAdditinal)
Return rowAdditional
所有先前添加的控件 ID 都保存在一个泛型列表中,即 List(Of String)
,以便在页面渲染时添加它们。List 也很方便,因为我们需要检查新的控件 ID 是否已经存在,这可以通过检查该列表的 Contains
函数来完成
AdditionalEnteries.Contains(textToBeAdded)
之后,AdditionalEnteries 列表中所有现有的控件 ID 都会在 Page_PreRender 中被渲染。
For Each keyEntry As String In AdditionalEnteries If Not String.IsNullOrEmpty(keyEntry) Then tblAdditionalControls.Controls.Add(CreateATableRow(keyEntry)) End If Next
完成了!!! 愉快编码。
关注点
在这里使用泛型是可选的。但使用泛型可以使很多事情更容易,包括这个。
历史
- 修改了语言以使阅读更容易。