我需要3个面板。而不是手动命名这个面板我想要一个面板数组?我怎么能在VB.net和ASP中做到这一点
在我的ASP页面中我有
<asp:Panel ID="Panel1" runat="server"></asp:Panel>
然后在VB.net中我生成一个面板数组。这将被添加到Panel1。 这是我到目前为止(在循环内)
Dim DivPanel() As Panel = Nothing
For i = 0 To 2
DivPanel(i) = new panel
DivPanel(i).controls.add(txtBox)
Panel1.controls.add(DivPanel(i))
Next
我在“DivPanel(i)=新面板”中收到错误消息。 错误是“NullReferenceException被捕获”
请建议...非常感谢谢谢
答案 0 :(得分:3)
您收到错误是因为您已声明了数组但尚未在此处初始化它:
Dim DivPanel() As Panel = Nothing
但是,您根本不需要该数组:
For i = 0 To 2
Dim panel = new Panel()
Dim txtBox = new TextBox()
panel.controls.add(txtBox)
Panel1.controls.add(panel)
Next
请注意,我还为每个面板创建了一个TextBox
,您不能使用相同的实例。
请记住最迟在Page_Load
中使用与之前相同的ID重新创建每个回发上的动态创建的控件。在您需要知道已经创建了多少控件之前。您可以使用ViewState
来保留该号码。
可推荐的读物:
或者您使用内置Data-Bound Control之类的Repeater自动执行此操作。您只需设置DataSource
并致电DataBind
()。
以下是关于实施的类似问题的答案: