2013-11-22 81 views
0

我有這樣的標記:調用C#按鈕處理

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

在從另一個按鈕的OnClientClick我火災事件這段代碼在JS:

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

它會發射。

但js服務器處理程序沒有觸發後。有什麼麻煩?

+0

代碼執行您要求的操作:執行客戶端單擊處理程序。有一個控制者試圖提出另一個事件是相當糟糕的做法。如果你想從多個事件中調用相同的代碼,寫一個函數並調用它。 –

回答

1

當您致電('<%= btnSave.ClientID %>').click()時,它將會在表格中進行相互發布,並會調用btnSave_Click並進行相同處理。

在這裏你不能指望btnGenerateReport_Click調用。

中序要做到這一點,你必須設置一些標誌,並調用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); 
} 
}