2012-02-15 31 views
10

ASPX CODICEeseguire codice lato server sul div click

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

Codice 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:

Quando clicco sul div non esegue il ServerSide Code ... perché ogni aiuto è apprezzato.

risposta

13

È necessario generare un evento server, non un evento client (e sembra che si desideri farlo in modo asincrono).

This article spiega come allegare uno snippet di codice a un elemento client (come uno DIV) e causare un postback asincrono.

Un altro modo rapido e sporco per ottenere ciò è utilizzare un pulsante server nascosto. Il pulsante può essere posizionato dove desiderato (ad esempio all'interno di UpdatePanel) e consente il corretto utilizzo del ciclo di vita della pagina ASP.

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

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

controllare questo post raise postback event from div tag

Distinti sarebbe simile a

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

Edit:

Provare qualcosa di simile

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

E 'spiegato meglio qui Partial postback with Javascript

+0

posso aggiungere questo alla sezione dei trigger del pannello di aggiornamento ?? non lo mostra la lista dei trigger. – user1150440

+0

questo div è all'interno del pannello di aggiornamento ma facendo clic su di esso si ricarica l'intera pagina. – user1150440

0

Un'altra alternativa è chiamare una funzione Javascript e quindi effettuare una chiamata al metodo di pagina. restituire i dati sotto forma di xml & rendering nel div.

1

Si consiglia di non utilizzare il controllo UpdatePanel, ma jQuery. È possibile trovare un esempio here

1

avvolgere il vostro div all'interno di un controllo LinkButton e chiamare il metodo di loadContentFamily su OnClick caso di LinkButton. Questo ha funzionato per me

+0

plz scusami per il mio povero inglese :) – n3verLieMe

Problemi correlati