2013-02-26 72 views
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 

什麼時候應該添加處理程序?我已經像這樣擺弄了這樣的事件。

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 

但這不起作用,我猜在數據綁定問題?

回答

1

您可以檢查出我的一個類似的問題在這裏回答:creating and listening for events

本質上講,你希望用戶控制,以提高自己的事件,像這樣:

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 
+0

Thx,純粹基於給出的額外細節獎勵的積分 – Dooie 2013-03-01 14:52:41

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是你應該用它來處理事件的功能,在控制這包含listview。