Выполнить серверный код на 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>
Ответ 2
Отметьте этот пост поднять событие postback из тега div
Ваш выглядел бы как
<div id="c" onclick="__doPostBack('loadContentFamily','')">
Family
</div>
Edit:
Попробуйте что-нибудь вроде
<Triggers>
<asp:AsyncPostBackTrigger ControlID="c" EventName="Click" />
</Triggers>
Здесь лучше объяснено Частичная обратная передача с Javascript
Ответ 3
Я бы рекомендовал не использовать элемент управления UpdatePanel, но jQuery. Вы можете найти пример здесь
Ответ 4
оберните свой div внутри элемента управления LinkButton и вызовите метод loadContentFamily в событии OnClick LinkButton. Это сработало для меня
Ответ 5
Другой альтернативой является вызов функции Javascript, а затем вызов метода страницы. возвращать данные в форме xml и рендерить в div.