2

我有一个按钮,我想正常工作,但我不希望它回发。

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

我试过这个:

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

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

做什么?

4

3 回答 3

2

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

这样,您的页面中就不会出现回发。

于 2012-09-26T21:21:04.290 回答
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
}

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

于 2012-09-26T20:46:57.147 回答
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
于 2012-09-26T21:38:05.540 回答