Выполнить серверный код на div-клике

ASPX CODE

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

Серверный код

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

Проблема:

Когда я нажимаю на div, он не выполняет код ServerSide... почему? Любая помощь оценивается.

Ответ 1

Вам нужно поднять событие сервера, а не событие клиента (и похоже, что вы хотите сделать это асинхронно).

В этой статье объясняется, как присоединить фрагмент кода к клиентскому элементу (например, DIV) и вызвать асинхронную обратную передачу.

Еще один быстрый и грязный способ сделать это - использовать кнопку скрытого сервера. Кнопка может быть расположена где угодно (например, внутри UpdatePanel) и позволяет правильно использовать жизненный цикл страницы ASP.

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

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

Ответ 3

Я бы рекомендовал не использовать элемент управления UpdatePanel, но jQuery. Вы можете найти пример здесь

Ответ 4

оберните свой div внутри элемента управления LinkButton и вызовите метод loadContentFamily в событии OnClick LinkButton. Это сработало для меня

Ответ 5

Другой альтернативой является вызов функции Javascript, а затем вызов метода страницы. возвращать данные в форме xml и рендерить в div.