我有一个按钮,我想像平常一样运行,除了我不希望它回发。
如果用户点击它,我想在下一次回发时执行Button Click事件,我只是不希望该特定按钮能够回发。
我试过了:
<asp:Button ID="ChangeAllBtn" runat="server" Text="Change All" OnClientClick="return false;" OnClick="ChangeAllBtnClick" />
但是在我回发后它没有调用ChangeAllBtnClick。 如果我删除“return false;”,那么在我想要之前就会有回发。
做什么?
答案 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