C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 170 を表示中)
■97847 / )  動的に追加したユーザーコントロールのイベントが取得できない
□投稿者/ emi (1回)-(2021/07/28(Wed) 15:45:41)

分類:[.NET 全般] 

開発環境:VisualStudio2019 targetFramework="4.8"
開発言語:VB.net HTML5
ブラウザ:IE Windows 10 バージョン 21H1

メインページ上の条件追加ボタン押下時にユーザーコントロールを動的に追加、
ユーザーコントロール内の条件削除ボタン押下で当該ユーザーコントロールを削除しようとしています。

ユーザーコントロールを動的に追加する処理は期待通りに動作し、PostBack時の入力値の保持も出来ています。
しかし、条件削除ボタン押下時の処理がうまくいきません。
ネットの情報をもとに試行錯誤してみましたが、先ず、onClickイベントが取得できません。
何がいけないのか、ご教授頂けませんでしょうか。宜しくお願い致します。


■メインページ
--(HTML)
<asp:button id="btnAddJyoken" runat="server" text="条件追加" />
<asp:PlaceHolder id="PlaceHolder1" runat="server"/>


--(VB)
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    Dim arrUc As New List(Of UserControl)
    Dim uc As UserControl = CType(Page.LoadControl("../Uc/UserControl.ascx"), UserControl)

    If Not IsPostBack Then
        '【条件】最初の1つを作成
        Me.PlaceHolder1.Controls.Add(uc)
        arrUc.Add(uc)
        AddHandler uc.UserControlButtonClicked, AddressOf UserControl_UserControlButtonClicked
        Session("DynamicControls") = arrUc
    Else
        If Session("DynamicControls") IsNot Nothing Then
            Dim i As Integer
            arrUc = CType(Session("DynamicControls"), List(Of UserControl))

            For i = 0 To arrUc.Count - 1
                uc = arrUc(i)
                Me.PlaceHolder1.Controls.Add(uc)
            Next i
        End If
    End If
End Sub

Private Sub btnAddJyoken_Click(sender As Object, e As EventArgs) Handles btnAddJyoken.Click

    Dim arrUc As New List(Of UserControl)
    Dim uc As UserControl = CType(Page.LoadControl("../Uc/UserControl.ascx"), UserControl)

    Me.PlaceHolder1.Controls.Add(uc)

    For Each uc In Me.PlaceHolder1.Controls
        arrUc.Add(uc)
        AddHandler uc.UserControlButtonClicked, AddressOf UserControl_UserControlButtonClicked
    Next uc

    Session("DynamicControls") = arrUc
End Sub

Private Sub UserControl_UserControlButtonClicked(ByVal sender As Object, ByVal e As System.EventArgs)
    Dim i As Integer = 0		←ブレークポイントを設定しても止まらない
End Sub


■ユーザーコントロール
--(HTML)
<asp:button id="btnDelJyoken" runat="server" text="条件削除" />


--(VB)
Public Event UserControlButtonClicked As EventHandler

Protected Sub btnDelJyoken_Click(sender As Object, e As EventArgs) Handles btnDelJyoken.Click
    RaiseEvent UserControlButtonClicked(Me, e)		←ブレークポイントを設定しても止まらない
End Sub

返信 編集キー/


管理者用

- Child Tree -