我有一个动态用户控件,上面有一个用于摘要仪表板的按钮。单击该按钮将不会触发click事件。控件的创建不会在Page_Load中发生,它们不会在程序中的其他地方发生。我在一个循环中创建它们,并创建该控件的1到X个实例。我知道它在PageLoad中工作时确实起作用,因为我有一个小的单独的WebApp来设计这些控件,并且只要将它们加载到PageLoad中,一切就可以在该应用程序中100%运行。我也知道,当我按下按钮时,控件会由于页面和回发的生命周期而消失。这很好,因为无论如何,只要单击UserControls按钮,我都会使它们消失。
直到我在dashboard.aspx.vb中单击之前,我不知道有多少UnerControls将被添加到X的dashboard1。在单击该控件之前,我也没有数据来设置UserControl的属性。 dashboard.aspx.vb
任何帮助将不胜感激
main.aspx
<div id="divPumpMainBody" runat="server" style="float: left; ">
</div>
UserControl.ascx
<asp:Panel ID="MainPumpPanel" runat="server" Height="100%">
<telerik:RadImageButton ID="RB" runat="server" Image-Url="/Main/Images/Dash/Clear.png"
Style="position: absolute; z-index: 1; width: 100%; height: 100%;">
</telerik:RadImageButton>
</asp:Panel>
UserControl.ascx.vb
Public Class UC_Pumps
Inherits System.Web.UI.UserControl
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
End Sub
Private Sub RB_Click(sender As Object, e As ImageButtonClickEventArgs) Handles RB.Click
msgbox("I was Clicked..")
End Sub
End class
创建用户控件 这在Dashboard.aspx.vb中
For i = 0 To DT_Dash.Rows.Count - 1
Dim DashName As String = "" & DT_Dash.Rows(i).Item("Name")
If DashType = "Pump" Then
Dim Pumps_UC1 As UC_Pumps = CType(Me.LoadControl("/Main/UserControls/UC_Pumps.ascx"), UC_Pumps)
Pumps_UC1.ID = i
Me.divPumpMainBody.Controls.Add(Pumps_UC1)
Pumps_UC1.SetPumpName = DashName
''about 5 more Set properties
End If
Next i