2013-11-22 2 views
0

Я такая разметка:вызова обработчик C# кнопки из функции OnClientClick перед другой C# кнопки обработчик щелчка

<asp:LinkButton runat="server" ID="btnGenerateReport" Text="Generate Report" OnClick="btnGenerateReport_Click" OnClientClick="javascript: return ShowConfirmBox(event, this)" /> 

В OnClientClick I случае пожара от другой кнопки этого кода в JS:

document.getElementById('<%= btnSave.ClientID %>').click(); 

и он стреляет.

Но после того, как обработчик сервера js не срабатывает. В чем проблема?

+0

Код делает то, что вы просили: выполните клиентский обработчик кликов. Наличие одного элемента управления пытается поднять чужие события - довольно плохая практика. Если вы хотите вызвать один и тот же код из нескольких событий, напишите функцию и вызовите ее. –

ответ

1

Когда вы позвоните ('<%= btnSave.ClientID %>').click(), он будет позаботиться о форме и будет вызывать btnSave_Click и обрабатывать то же самое.

Здесь вы не можете ожидать btnGenerateReport_Click invoke.

Симметричного делать, что вы должны установить некоторый флаг в и вызвать btnGenerateReport_Click

Ниже пример кода может помочь вам в этом

<asp:HiddenField id="hdnInvokeGenerateReport" runat="server" value="0" /> 

и установить его в JS

document.getElementById('<%= hdnInvokeGenerateReport.ClientID %>').value="1"; 

document.getElementById('<%= btnSave.ClientID %>').click(); 

В Код за

protected void btnSave_Click(object sender, EventArgs e) 
{ 
if(hdnInvokeGenerateReport.Value=="1") 
{ 
    btnGenerateReport_Click(this, null); 
} 
} 
Смежные вопросы