1

ボタンのクリック時にイベントを発生させる単純なユーザーコントロールがあります

Public Class UcPaymentCheque
    Inherits System.Web.UI.UserControl

    Public Event OnCancelClick()

    Private Sub btnCancelPayment_Click(sender As Object, e As System.EventArgs) Handles btnCancelPayment.Click
        RaiseEvent OnCancelClick()
    End Sub
End Class

このユーザーコントロールはリストビュー内で使用されます

<asp:ListView ID="lvwNonTpProducts" runat="server" ItemPlaceholderID="ItemPlaceholder">
    <LayoutTemplate>
        <asp:PlaceHolder ID="ItemPlaceholder" runat="server" />
    </LayoutTemplate>
    <ItemTemplate>
        <TPCustomControl:UcPaymentCheque ID="UcTPPaymentCheque" runat="server" Visible="false" />
    </ItemTemplate>
</asp:ListView>

ページの読み込み時にデータバインドされる

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    If Page.IsPostBack Then

    Else
        BuildPage()
    End If
End Sub

どの時点でハンドラーを追加する必要がありますか? 私は ondatabound イベントをいじりました。

Private Sub lvwNonTpProducts_ItemDataBound(sender As Object, e As System.Web.UI.WebControls.ListViewItemEventArgs) Handles lvwNonTpProducts.ItemDataBound
    Dim UcTPPaymentCheque = DirectCast(e.Item.FindControl("UcTPPaymentCheque"), UcPaymentCheque)
    AddHandler UcTPPaymentCheque.OnCancelClick, AddressOf OnCancelClick
End Sub

しかし、これは機能せず、データバインドの問題を推測していますか???

4

2 に答える 2

1

ここで、同様の質問に対する私の回答を確認できます: イベントの作成とリッスン

基本的に、次のように、ユーザー コントロールが独自のイベントを発生させる必要があります。

Partial Class myControl
    Inherits System.Web.UI.UserControl
    Public Event MyEvent As EventHandler

    'your button click event
    Protected Sub bnt_click(ByVal sender As Object, ByVal e As EventArgs)
      'do stuff
      'now raise the event
       RaiseEvent MyEvent (Me, New EventArgs)
    end sub
end class

この例では、ユーザーがユーザー コントロール内のボタンをクリックしたときにイベントを発生させます。コントロールがロードされたとき、タイマーを使用したときなど、どこでも簡単にイベントを発生させることができます。

次に、メイン ページで、次のように、ユーザー コントロールにイベント ハンドラーを追加します。

<mc:myControlrunat="server" ID="myControl1" OnMyEvent="myControl_MyEvent"  /> 

これで、コード ビハインドで、次のようにイベントを追加できます。

Protected Sub myControl_MyEvent(ByVal sender As Object, ByVal e As EventArgs)
 'do stuff 
end sub
于 2013-02-28T13:17:01.673 に答える
0

OnCancelClick次のように、 を使用して、リストビューのユーザー コントロールの宣言にハンドラーを追加できます。

<asp:ListView ID="lvwNonTpProducts" runat="server" ItemPlaceholderID="ItemPlaceholder">
    <LayoutTemplate>
        <asp:PlaceHolder ID="ItemPlaceholder" runat="server" />
    </LayoutTemplate>
    <ItemTemplate>
        <TPCustomControl:UcPaymentCheque ID="UcTPPaymentCheque" runat="server" Visible="false" OnCancelClick="UcTPPaymentCheque_OnCancelClick" />
    </ItemTemplate>
</asp:ListView>

UcTPPaymentCheque_OnCancelClickリストビューを含むコントロールで、イベントを処理するために使用する関数はどこにありますか。

于 2013-02-28T11:22:54.743 に答える