ASPX代码
<div id="c" runat="server" onclick="loadContentFamily" onmousedown="loadContentFamily" rel="divUpdatePanel" >Family</div>
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
问题:
当我点击div它不执行ServerSide代码…为什么??任何帮助赞赏.
解决方法
您需要提出服务器事件,而不是客户端事件(并且您希望以异步方式执行).
This article解释了如何将一段代码附加到客户端元素(如DIV)并导致异步回发.
实现这一点的另一种快速而肮脏的方式是使用隐藏的服务器按钮.该按钮可以位于任何需要的位置(例如UpdatePanel内),并且可以正确使用ASP页面生命周期.
<asp:Button runat="server" id="btnPostback" style="display:none" onclick="serverEventHandler" /> <div onclick="document.getElementById('<%= btnPostback.ClientID %>').click()">Clickable DIV</div>