【发布时间】:2012-11-11 14:22:39
【问题描述】:
我尝试使用带有 .ascx 文件的自定义控件在单击按钮事件时在 ASP 页面中加载多个控件。
这是我的 .ascx 文件:
<%@ Control Language="VB" ClassName="CHelloWorld" %>
<script runat="server">
</script>
<asp:Panel ID="panel" runat="server">
hello world!
</asp:Panel>
现在我创建一个带有按钮的 .aspx 文件和一个面板,每次使用单击按钮时我都会在其中添加控件:
<asp:Panel runat="server" id="panelcontrols">
</asp:Panel>
<asp:Button id="myButton" OnClick="OnClickButton" Text="Add" />
这是我的带有点击事件的 .vb 文件:
Sub OnClickButton(ByVal sender As Object, ByVal e As System.EventArgs)
Dim myControl As Control
myControl = LoadControl("myfile.ascx")
panelcontrols.Controls.Add(myControl )
End Sub
有了这个实现,当我第一次点击时:我看到“Hello World!”在我的页面中,但是当我第二次、第三次单击时,......没有发生任何变化!
是因为我只能从 .ascx 加载一个控件吗?
如何从单个 .ascx 文件创建多个控件?
谢谢。
[编辑]
好的,我现在使用 WiewState 来记住已经创建的控件。谢谢。
但我有一个问题:
我的 .aspx 文件使用 .vb 文件中的代码(我在其中定义了 OnClickButton),并在 @Page 指令中使用这一行:Src="[path]/myscript.vb
但是在这个 .vb 文件中我不知道如何使用 CHelloWorld 控件类型来修改控件属性。
如果我使用此代码,它将不起作用:
Sub OnClickButton(ByVal sender As Object, ByVal e As System.EventArgs)
Dim myControl As CHelloWorld
myControl = LoadControl("myfile.ascx")
panelcontrols.Controls.Add(myControl )
End Sub
说“CHelloWorld”没有定义!
我该怎么办?
【问题讨论】:
-
你知道视图状态是打开还是关闭?
-
我使用 ViewState 编辑了帖子,感谢您的回答。
标签: asp.net vb.net dynamic controls