2011-02-08 52 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