jQuery call __doPostBack on LinkButton

2019-03-30 02:15发布

问题:

I have a LinkButton that I need to perform a click on to cause a postback. The actual link target is:

javascript:__doPostBack('ctl00$c1$btnRefreshGrid','');

Clicking the link does perform the postback, as verified by a breakpoint in the code-behind. Also pasting javascript:__doPostBack('ctl00$c1$btnRefreshGrid','') in the address bar of the browser works with the same effect.

I've tried the following with no effect at all:

__doPostBack('ctl00$c1$btnRefreshGrid','');    
$('#ctl00$c1$btnRefreshGrid').click();
$('#ctl00$c1$btnRefreshGrid').trigger('click');
eval($('#ctl00$c1$btnRefreshGrid').attr("href"));

I've tried using both <%= btnRefreshGrid.UniqueID %> and <%= btnRefreshGrid.ClientID %> to generate the selector.

回答1:

You were close, this works in Firefox:

 function clickMyButton() {
   javascript:__doPostBack('<%= MYBUTTONID.UniqueID %>','')
};


回答2:

the following works for the following anchor (originally asp:LinkButton in server side) inside li

<li>
<a id="ctl00_ContentPlaceHolder1_ChangeNumberItemGrd_ctl01_FindByID" href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$ChangeNumberItemGrd$ctl01$FindByID','')">287573</a>
</li>

because i do not have the name i must generate it from it

$(".msglist li").on("click", function () {    
    var postbackArg = $(this).find("a").prop("id").replace(/_/g,"$");    
    __doPostBack(postbackArg, '');

});


回答3:

$("#<%= btnRefreshGrid.ClientID %>").click();

Should work...

Hope it helps!!!



回答4:

In firebug you can get the correct name and link action of the link button:

<a id="MainContent_ctl00_Submit_Button" href="javascript:__doPostBack('ctl00$MainContent$ctl00$Submit_Button','')"></a>


回答5:

var Eventtarget = $("#btnSave").attr("name");
__doPostBack(Eventtarget, "");