在没有回发的情况下调用按钮事件

时间:2012-09-26 20:37:58

标签: asp.net

我有一个按钮,我想像平常一样运行,除了我不希望它回发。

如果用户点击它,我想在下一次回发时执行Button Click事件,我只是不希望该特定按钮能够回发。

我试过了:

<asp:Button ID="ChangeAllBtn" runat="server" Text="Change All" OnClientClick="return false;" OnClick="ChangeAllBtnClick" />

但是在我回发后它没有调用ChangeAllBtnClick。 如果我删除“return false;”,那么在我想要之前就会有回发。

做什么?

3 个答案:

答案 0 :(得分:2)

您可以拥有一个存储第一次点击的隐藏字段。如果用户第二次点击,您可以尝试发出ajax请求..

这样,您的网页就不会有回发。

答案 1 :(得分:1)

好像是一个奇怪的请求。我不知道如何做到这一点。是否可以以这样的方式构建代码:当您回发它时,它只执行按钮单击事件中的代码?例如:

void ChangeAllBtnClick(object o, EventArgs e)
{
   DoStuff();
}

void RealButton_BtnClick(object o, EventArgs e)
{
   DoStuff(); //Executing all the code that would have been run for ChangeAllBtnClick here
   /*
      code for RealButton would be in here...
   */
}

void DoStuff()
{
   //Whatever
}

如果这不是一个选项,我可能会创建一个隐藏字段,这是一个服务器端控件。然后,您可以从客户端脚本设置此项并检查服务器端的值。

答案 2 :(得分:0)

以下是否有效?设置onclientclick javascript以返回false,因此它不回发,但也有该函数将隐藏字段中的值设置为“1”,默认为“0”基本上是一个标志。

在PageLoad上检查隐藏字段的值,如果值为1,则执行所需的代码并将隐藏字段值设置回0。

<!------HTML Code------>
<input type="hidden" id="hdnChangeAllFlag  value="0" />
<asp:Button ID="ChangeAllBtn" runat="server" Text="Change All" OnClientClick="return > ChangeAllClicked()" />

<script>
function ChangeAllClicked()
{
$("#hdnChangeAllFlag").val('1');
return false;
}
</script>
''' Server Side Code

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    If Request("hdnChangeAllFlag")="1" and IsPostback Then
        ''''Y
    End If

End Sub
相关问题