簡體   English   中英

如何從單個.ascx文件在ASP.net頁中加載多個用戶控件

[英]How to load multiple user controls in ASP.net page from a single .ascx file

我嘗試將自定義控件與.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為您服務。

關於下一個問題,您是否擁有正確的名稱空間? (可能值得在另一個問題中提出這個問題)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM