从ASP.NET服务器端代码触发Jquery事件

本文关键字:Jquery 事件 代码 ASP NET 服务器端 | 更新日期: 2023-09-27 18:20:20

我有一个简单的启用JQuery的ASP.NET页面:

<script>
    $(document).ready(function() {
    $("#accordion").accordion();
  });
  </script>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
        <div id="accordion">
            <h3><a id="Accordion1" href="#">Accordion Panel 1</a></h3>
            <div>
                A form input...
                <asp:Button id="btnSubmit" runat="server" onclick="btnSubmit_Click" />
            </div>
            <h3><a id="Accordion2" href="#">Accordion Panel 2</a></h3>
            <div>
            Some content...
            </div>
        </div>
    </ContentTemplate>
</asp:UpdatePanel>

如果你注意到的话,我也在使用UpdatePanel。

btnSubmit_Click事件的作用如下:

protected void btnSubmit_Click(object sender, EventArgs e)
{
    //Some MySql INSERT, etc.
}

现在我想做的是让服务器端btnSubmit_Click触发JQuery"点击"Accordion Panel 2(这样它就会打开Accordio Panel 2并关闭1)。如何做到这一点?

更新:对不起,伙计们,我忘了早些时候提到它有一个UpdatePanel

从ASP.NET服务器端代码触发Jquery事件

哦,好吧,我只是使用了"在回发后更改隐藏字段的值,然后让jquery读取该隐藏字段"的方法。谢谢大家!

Jquery:

var tag = $("#contentBody_hfTag1").val();
if (tag=="1") { $(".Accordion").accordion({ active: 1 }); }
else { $(".Accordion").accordion({ active: 0 }); }

.aspx

<asp:HiddenField ID="hfTag1" ClientIDMode="Predictable" Value="0" runat="server" />

C#

protected void btnMyButton_Click(object sender, EventArgs e)
{
    hfTag1.Value = "1";
}

你不能。Jquery在客户端上运行,您的处理程序在服务器上。当页面在返回后重新加载时,您需要在客户端上触发事件。

您不能这样做,因为Jquery在客户端工作,在页面重新加载时从服务器端事件开始。手风琴的状态将失去。所以你可以做的是,你可以在Jquery AJAX调用中做同样的工作,而不是回发帖子。点击按钮做你想做的任何事情,然后关闭手风琴1并显示手风琴2。

<asp:UpdatePanel ID="up1" runat="server">
    <ContentTemplate>
        <i88:InlineScript runat="server">
            <script type="text/javascript">
                $('Accordion2').click()
            </script>
        </i88:InlineScript>
        <asp:Button ID="cmd" runat="server" Text="Update" />        
    </ContentTemplate>
</asp:UpdatePanel>

您可以放入每次更新Panel时都会执行的inlineScript。您也可以使用jQuery.Trigger();用于其他活动。