Je programme en VB.NET. J'essaie de créer un événement onClick pour une balise div. Comment puis-je faire cela dans le code derrière?Événement onClick dans VB.NET
Répondre
Une solution possible serait de créer un Webusercontrol avec un Panel (sera rendu en DIV) et un bouton invisible (Display: none). Onclick de la div vous pouvez cliquer sur le bouton par javascript qui provoquerait un Postback automatique. Dans Codebehind vous attraperiez cet événement ButtonClick et relancez un événement personnalisé (DivClicked). Vous pouvez donc réutiliser ce contrôle partout. Quelque chose comme ceci:
ClickableDiv.ascx
<%@ Control Language="vb" AutoEventWireup="false" CodeBehind="ClickableDiv.ascx.vb" Inherits="WebApplication1.ClickableDiv" %>
<asp:Panel id="TheDiv" runat="server" onMouseOver="this.style.cursor='pointer'" onclick="this.nextSibling.click()" /><asp:Button ID="DivButton" runat="server" />
ClickableDiv.ascx Codebehind
Partial Public Class ClickableDiv
Inherits System.Web.UI.UserControl
Public Event DivClicked(ByVal src As ClickableDiv)
Private Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
Me.DivButton.Style.Add("display", "none")
End Sub
Public ReadOnly Property Div() As Panel
Get
Return Me.TheDiv
End Get
End Property
Protected Sub DivButton_Click(ByVal sender As Object, ByVal e As EventArgs) Handles DivButton.Click
RaiseEvent DivClicked(Me)
End Sub
End Class
Et par exemple dans une page (faites glisser & déposez au concepteur):
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim imgTest As New Image
imgTest.ImageUrl = "http://skins.gmodules.com/ig/images/logos/approved/white.png"
Me.ClickableDiv1.Div.Controls.Add(imgTest)
End Sub
Private Sub ClickableDiv1_DivClicked(ByVal src As ClickableDiv) Handles ClickableDiv1.DivClicked
Dim div As ClickableDiv = src
End Sub
Btw, vous pouvez également utiliser le __doPostback-function sur l'événement onclick DIV pour déclencher une publication.
1- créer asp caché: bouton
2 sur div clic document.getElementById('<%=HiddenButton.ClientID%>').click();
ce sera le feu Button_Click événement sur le serveur
** ne pas oublier de mettre UseSubmitBehaviour=false
pour le bouton caché pour faire fonctionne événement click
Ouais, c'est comme ça que je le ferais aussi. +1 – RPM1984