2010-10-07 2 views

ответ

2

Одним из возможных решений было бы создание Webusercontrol с панелью (будет отображаться как DIV) и невидимой кнопкой (Display: none). Onclick из div вы можете нажать кнопку на javascript, что приведет к автоматическому возврату. В Codebehind вы поймаете это событие ButtonClick-Event и поднимите пользовательское событие (DivClicked). Поэтому вы можете повторно использовать этот контроль повсюду. Что-то вроде этого:

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 

И, например, в любой странице (перетащить & бросьте дизайнер):

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 

Кстати, вы также можете использовать __doPostback-function в событии onclick DIV, чтобы поднять Postback.

+0

Да, так я и сделал бы это. +1 – RPM1984

0

1- создать скрытый жерех: кнопка

2- на сОн мыши document.getElementById('<%=HiddenButton.ClientID%>').click(); это будет срабатывать button_click события на сервере

** не забудьте установить UseSubmitBehaviour=false для скрытой кнопки, чтобы сделать щелчок событие работает

Смежные вопросы