在另一个c#按钮单击处理程序之前,从OnClientClick函数调用C#按钮处理程序

时间:2013-11-22 10:33:15

标签: javascript asp.net

我有这样的标记:

<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服务器处理程序没有触发之后。有什么问题?

1 个答案:

答案 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();

在Code背后

protected void btnSave_Click(object sender, EventArgs e)
{
 if(hdnInvokeGenerateReport.Value=="1")
 {
   btnGenerateReport_Click(this, null);
 }
}