クリック ボタン イベントで、ASP ページに複数のコントロールをロードするために、.ascx ファイルでカスタム コントロールを使用しようとしています。
ここに私の .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!」と表示されます。私のページでは、しかし、2回目、3回目をクリックすると...変化はありません!
.ascx から 1 つのコントロールしかロードできないからですか?
単一の .ascx ファイルから複数のコントロールを作成するにはどうすればよいですか?
ありがとう。
[編集]
OK、今は WiewState を使用して、既に作成されたコントロールを記憶しています。ありがとう。
しかし、私は質問があります:
私の.aspxファイルは、@Pageディレクティブの次の行で.vbファイル(OnClickButtonを定義した場所)のコードを使用します: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」が定義されていないと言って失敗します!
どのようにできるのか ?