2012-02-15 12 views
10

ASPX CÓDIGOejecutar código serverside en div clic

<div id="c" runat="server" onclick="loadContentFamily" onmousedown="loadContentFamily" rel="divUpdatePanel" >Family</div> 

Código ServerSide

Public Sub loadContentFamily(ByVal PageName As String) 
     MsgBox("") 
     PageName = "Family" 
     Dim _con As New SqlConnection(ConfigurationManager.ConnectionStrings("LeaveDBConnectionString").ConnectionString) 
     Dim _da As New SqlDataAdapter("SELECT PageHeader,PageContent FROM PageKeeper WHERE PageName='" & PageName & "'", _con) 
     Dim _table As New DataTable 

     Try 
      _con.Open() 
      _da.Fill(_table) 
      _con.Close() 
      _con.Dispose() 
      With _table.Rows(0) 
       h4header.InnerText = .Item(0) 
       divUpdatePanel.InnerHtml = .Item(1) 
       Me.Title = .Item(0) 
      End With 

     Catch ex As Exception 
      MsgBox(ex.Message) 
      divUpdatePanel.InnerText = "No Data Found" 
     Finally 
      _con.Close() 
      _con.Dispose() 
     End Try 
    End Sub 

PROBLEMA:

Cuando hago clic en el div que no ejecuta la Código ServerSide ... ¿por qué? Cualquier ayuda apreciada.

Respuesta

13

Debe generar un evento de servidor, no un evento de cliente (y parece que desea hacerlo de forma asincrónica).

This article explica cómo adjuntar un fragmento de código a un elemento de cliente (como un DIV) y provocar una devolución de datos asincrónica.

Otra forma rápida y sucia de lograr esto es utilizar un botón de servidor oculto. El botón se puede ubicar donde se desee (por ejemplo, dentro de un UpdatePanel) y permite el uso adecuado del ciclo de vida de la página ASP.

<asp:Button runat="server" id="btnPostback" style="display:none" onclick="serverEventHandler" /> 

<div onclick="document.getElementById('<%= btnPostback.ClientID %>').click()">Clickable DIV</div> 
3

Salida este post raise postback event from div tag

El suyo sería algo como

<div id="c" onclick="__doPostBack('loadContentFamily','')"> 
Family 
</div> 

Editar:

Pruebe algo como

<Triggers> 
     <asp:AsyncPostBackTrigger ControlID="c" EventName="Click" /> 
    </Triggers> 

Se explica mejor aquí Partial postback with Javascript

+0

¿Puedo agregar esto a la sección de disparadores del panel de actualización? No lo muestra la lista de desencadenantes. – user1150440

+0

este div está dentro del panel de actualización, pero al hacer clic en él se vuelve a cargar toda la página. – user1150440

0

Otra alternativa es llamar a una función de Javascript y luego hacer una llamada al método de página. devolver datos en forma de xml & renderizar en div.

1

Recomendaría no usar el control UpdatePanel, pero jQuery. Puede encontrar un ejemplo here

1

envolver su div dentro de un control LinkButton y llame a su método de loadContentFamily en OnClick caso de LinkButton. Esto funcionó para mí

+0

por favor discúlpeme por mi pobre inglés :) – n3verLieMe

Cuestiones relacionadas