我尝试使用带有 .ascx 文件的自定义控件在单击按钮事件时在 ASP 页面中加载多个控件。
这是我的 .ascx 文件:
<%@ Control Language="VB" ClassName="CHelloWorld" %>
<script runat="server">
</script>
<asp:Panel ID="panel" runat="server">
hello world!
</asp:Panel>
现在我创建一个带有按钮的 .aspx 文件,以及一个面板,每次使用 click on button 时我都会在其中添加控件:
<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”没有定义!
我能怎么做 ?