使用jQuery触发Click事件

时间:2011-05-21 12:30:48

标签: jquery asp.net

我想使用放置在Updatepanel中的jQuery
Target按钮来触发ASP.NET按钮
jQuery代码:

    $(document).ready(function () {
     $('.ViewDetail').click(function (e) {
        var ID = $(this).parent().parent().attr('ExpID');
        $("#hflIdentityID").val(ID);
        $("#btnLoadBills").trigger('click');
        $("#ExpenseBills").dialog("open");
        return false;
    });
        });

标记代码:

<asp:UpdatePanel ID="DetailBillUpdatepanel" runat="server">
            <ContentTemplate>
                <div id="btnLoadGrid" style="display: none;">
                    <asp:Button ID="btnLoadBills" ClientIDMode="Static" CausesValidation="false" runat="server"
                        Text="Button" />
                </div>
               GridView is Here...
            </ContentTemplate>
        </asp:UpdatePanel>

代码背后:

Protected Sub btnLoadBills_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnLoadBills.Click
        grvExpenseBills.DataSource = tadok.Data.DataRepository.EdlBlpProvider.GetByEdlId(hflIdentityID.Value)
        grvExpenseBills.DataBind()
       End Sub

为什么事件不会发生?

3 个答案:

答案 0 :(得分:2)

#btnLoadBills不代表按钮的实际ID,请尝试使用以下

$('#<%= btnLoadBills.ClientID %>').trigger('click');

答案 1 :(得分:2)

将您的jquery事件处理程序绑定到以下函数

function pageLoad(sender,args) {

    // binding code here, for example
    $('#button').click(function(e) {
        // do something when the click event is raised
    });

}
每次回发,同步或异步后都会执行

pageLoad。 pageLoad是ASP.NET AJAX中用于此目的的保留函数名。另一方面,$(document).ready()仅在DOM最初准备/加载时执行一次。
这取自this

答案 2 :(得分:1)

将此代码用于此类情况

 Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequestHandler);


            function endRequestHandler(sender, args)

            {

                 $('.ViewDetail').click(function (e) {
                 var ID = $(this).parent().parent().attr('ExpID');
                 $("#hflIdentityID").val(ID);
                 $("#btnLoadBills").trigger('click');
                 $("#ExpenseBills").dialog("open");
                 return false;
             });

            }