2011-02-08 81 views
0

我有一個非常具體的問題。我有一個用戶控件(下面的代碼)需要像一個按鈕。我研究過寫入一個自定義的服務器控件,但我認爲這太過於殺人了。我遇到的另一個選項是讓div標籤觸發一個javascript onclick,這將觸發一個asp:按鈕單擊事件。但我也覺得這也是一件怪事。創建自定義服務器或用戶按鈕

我在尋找的解決方案是,無論何時單擊用戶控件,它都會觸發一個onClick事件(就像普通按鈕一樣,除了我想要的標記)。

(用戶控制代碼)有字體的CSS樣式,這應該不會影響問題。背後

<div style="border:2px solid black; background-color:white" > 
    <div> 
     <asp:Label ID="lblMeetingCityState" runat="server" Text='<%# Eval("City") %>'></asp:Label> 
    </div> 
    <div> 
     <asp:Label ID="lblMeetingDate" runat="server" Text='<%# Eval("MeetingDate") %>'></asp:Label> 
    </div> 
    <div> 
     <asp:Label ID="lblMeetingSite" runat='server' Text='<%# Eval("Location") %>'></asp:Label> 
    </div> 
    </div> 

代碼,以提高對點擊

<System.Security.Permissions.PermissionSetAttribute(System.Security.Permissions.SecurityAction.Demand, Name:="FullTrust")> _ 
Partial Public Class MeetingButton 
    Inherits System.Web.UI.UserControl 
    Implements System.Web.UI.IPostBackEventHandler 

    Public Event Click As EventHandler 

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

    End Sub 

    Protected Overridable Sub OnClick(ByVal E As EventArgs) 
    RaiseEvent Click(Me, E) 
    End Sub 

    Public Sub RaisePostBackEvent(ByVal eventArgument As String) _ 
     Implements IPostBackEventHandler.RaisePostBackEvent 

    OnClick(New EventArgs()) 
    End Sub 
End Class 
+0

以下每個答案都只能指出我正確的方向,如果您正在閱讀本文,請花一點時間幫忙。非常感謝您 – gh9 2011-02-08 17:27:40

回答

0

asp:linkbutton似乎正在做我所需要的。

1

IPostBackEventHandler Interface活動將讓你做到這一點。基本上在你的用戶控件的代碼後面添加以下內容:

public class MyUserControl: Control, IPostBackEventHandler { 

     // Defines the Click event. 
     public event EventHandler Click; 

     //Invoke delegates registered with the Click event. 
     protected virtual void OnClick(EventArgs e) { 

     if (Click != null) { 
      Click(this, e); 
     } 
     } 


     // Define the method of IPostBackEventHandler that raises change events. 
     public void RaisePostBackEvent(string eventArgument){ 

     OnClick(new EventArgs()); 
     } 

} 
+0

我已將其轉換爲vb並將其放在我的用戶控件的代碼隱藏中,但我似乎無法raiseThePostback事件 – gh9 2011-02-08 16:00:38