ASPX代码
<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代码......为什么?任何帮助表示赞赏。
答案 0 :(得分:14)
您需要引发服务器事件,而不是客户端事件(看起来您希望异步执行此操作)。
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>
答案 1 :(得分:3)
查看此帖子raise postback event from div tag
你的看起来像
<div id="c" onclick="__doPostBack('loadContentFamily','')">
Family
</div>
修改强>
尝试类似
的内容<Triggers>
<asp:AsyncPostBackTrigger ControlID="c" EventName="Click" />
</Triggers>
这里有更好的解释Partial postback with Javascript
答案 2 :(得分:2)
将div包装在LinkButton控件中,并在LinkButton的OnClick事件上调用loadContentFamily方法。这对我有用
答案 3 :(得分:1)
我建议不要使用UpdatePanel控件,而是使用jQuery。您可以找到示例here
答案 4 :(得分:0)
其他替代方法是调用Javascript函数然后进行页面方法调用。以xml&amp ;;形式返回数据在div中渲染。