0

これが私の状況です。各行にネストされたカスタム ユーザー コントロール (UC1) を持つグリッドビュー (gridview1) があります。カスタム ユーザー コントロールには、ボタンがクリックされたときに発生する "TaskChanged" というカスタム パブリック イベントがあります。親ページ (default.aspx) で、ユーザー コントロールにアクセスしてイベント ハンドラーをアタッチしようとしましたが、失敗しました。これが私がそれをやろうとしている方法です。

親ページ:

 Protected Sub GridViewTasks_RowDataBound(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridViewTasks.RowDataBound
 If e.Row.RowType = DataControlRowType.DataRow Then
        'Get the User Control
        Dim Uc As UserControl = e.Row.FindControl("TaskResourceAssignment")
        'Attatch event handler
        AddHandler Uc.TaskChanged, AddressOf Uc_OnTaskChanged


    End If
End Sub

問題は、次の行にあります。

AddHandler Uc.TaskChanged, AddressOf Uc_OnTaskChanged

コントロールの「TaskChanged」イベントを見つけることができず (Uc.TaskChanged はその下に波線を取得します)、ページを実行するとエラーがスローされます。友人がこれを行うことができたのを覚えていますが、彼は自分のユーザー コントロールをオブジェクトとしてキャストし、それにアクセスできました。私はそれを試してみましたが、うまくいきませんでした。

カスタム コントロールがイベントを発生させており、イベントをバブリングしていません。イベントをバブリングすることで機能させることができますが、イベント ハンドラーをコントロールにアタッチすることで実現したいと考えています。誰か助けて??

4

3 に答える 3

0

通常にはイベントUserControlがないため、ユーザーコントロールを特定のものに明示的にキャストする必要があります。TaskChanged

このようなもの -

Dim Uc = TryCast(e.Row.FindControl("TaskResourceAssignment"), 
   TaskResourceAssignment)
于 2013-06-27T17:01:57.173 に答える