2011-02-08 4 views
0

J'ai un problème très spécifique. J'ai un contrôle utilisateur (code ci-dessous) qui doit agir comme un bouton. J'ai étudié dans l'écriture d'un contrôle de serveur personnalisé, mais je pense que c'est plus de tuer. L'autre option que j'ai rencontrée est que la balise div déclenche un javascript onclick et que cela déclencherait un événement click: button. Mais je pense aussi que c'est aussi hacky.créer un serveur personnalisé ou un bouton utilisateur

La solution que je recherche est que chaque fois que le contrôle de l'utilisateur est cliqué, il déclenchera un événement onClick (agissant comme un bouton normal, sauf avec mon balisage désiré).

(code de contrôle utilisateur) il y a un style css pour la police, cela ne devrait pas avoir d'impact sur le problème.

<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> 
Code

derrière pour élever événement click

<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

Chacune des réponses ci-dessous ne m'a pointé que dans la bonne direction, si vous lisez ceci, veuillez prendre une minute pour vous aider. Merci beaucoup – gh9

Répondre

0

Un asp: linkbutton semble faire ce dont j'ai besoin.

1

IPostBackEventHandler Interface vous permettra de le faire. En gros, dans le code derrière de votre contrôle utilisateur ajouter ce qui suit:

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

Je l'ai converti en vb et le mettre dans le codebehind de mon contrôle utilisateur, mais je ne semble pas capable d'augmenter l'événement ThePostback – gh9

+0

dois-je changer mon contrôle utilisateur pour être un contrôle serveur personnalisé pour obtenir ceci travail? – gh9

+0

Je ne peux pas non plus déclencher le retour sauf si je mets un type d'entrée dans le balisage ou de codebehind. Je veux que le type d'entrée soit l'entier div de premier niveau. Y-a-t'il une façon de le faire? – gh9

Questions connexes