【问题标题】:execute serverside code on div click在 div click 上执行服务器端代码
【发布时间】:2012-03-06 20:50:00
【问题描述】:

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 时,它不执行服务器端代码...为什么??感谢任何帮助。

【问题讨论】:

    标签: asp.net vb.net


    【解决方案1】:

    查看这篇帖子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

    【讨论】:

    • 我可以将它添加到更新面板的触发器部分吗?它没有显示触发器列表。
    • 这个 div 在更新面板中,但是点击它会重新加载整个页面。
    【解决方案2】:

    另一种方法是调用 Javascript 函数,然后调用页面方法。以 xml 形式返回数据并在 div 中呈现。

    【讨论】:

      【解决方案3】:

      我建议不要使用 UpdatePanel 控件,而是使用 jQuery。你可以找到一个例子here

      【讨论】:

        【解决方案4】:

        您需要引发服务器事件,而不是客户端事件(看起来您希望异步执行此操作)。

        实现此目的的一种快速而肮脏的方法是使用隐藏的服务器按钮。该按钮可以位于任何需要的位置(例如在UpdatePanel 内),它允许正确使用 ASP 页面生命周期。

        <asp:Button runat="server" id="btnPostback" style="display:none" onclick="serverEventHandler" />
        
        <div onclick="document.getElementById('<%= btnPostback.ClientID %>').click()">Clickable DIV</div>
        

        【讨论】:

          【解决方案5】:

          将您的 div 包装在 LinkBut​​ton 控件中,并在 LinkBut​​ton 的 OnClick 事件上调用您的 loadContentFamily 方法。这对我有用

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2016-04-21
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-09-19
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多