我想使用放置在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
为什么事件不会发生?
答案 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;
});
}