在div上执行服务器端代码

时间:2012-02-15 13:50:46

标签: asp.net vb.net

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代码......为什么?任何帮助表示赞赏。

5 个答案:

答案 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包装在LinkBut​​ton控件中,并在LinkBut​​ton的OnClick事件上调用loadContentFamily方法。这对我有用

答案 3 :(得分:1)

我建议不要使用UpdatePanel控件,而是使用jQuery。您可以找到示例here

答案 4 :(得分:0)

其他替代方法是调用Javascript函数然后进行页面方法调用。以xml&amp ;;形式返回数据在div中渲染。