我想知道哪个函数首先执行OnCommand或OnClientClick?
<asp:LinkButton ID="btnHRApprove" runat="server" Text="Approve" OnCommand="btnApprove_Click" OnClientClick="return ValidatePayrate()" CommandArgument="HR" CssClass="adLink" />
答案 0 :(得分:2)
OnClientClick="return ValidatePayrate()"
这将首先执行,根据其返回值,下一个函数将执行, 如果它返回false则进一步执行否则
OnCommand="btnApprove_Click"
将执行。
答案 1 :(得分:1)
在Web应用程序中工作时,始终要记住为客户端编写的方法和调用总是先执行。
因此,在您的情况下,方法 ValidatePayrate()将首先被触发,如果它返回false,则服务器端函数将不会被执行。
答案 2 :(得分:1)
OnClientClick
首先执行,因为它在客户端执行,但只绑定到一个控制器,而
OnCommand
也在客户端执行但是调用服务器端方法并且可以绑定到具有不同Id:s的多个按钮,然后通过switch case处理以确定命令是什么样的:
<asp:Button id="btnHRApprove"
Text="approve"
CommandName="ValidatePayrate"
OnCommand="btnApprove_Click"
runat="server"/>
<asp:Button id="btnSubmit"
Text="Submit"
CommandName="Submit"
OnCommand="btnApprove_Click"
runat="server"/>
然后在后面的代码中(在本例中为C#),您可以使用switch case来检查给出的命令而不是单击了哪个按钮:
void btnApprove_Click(Object sender, CommandEventArgs e)
{
switch(e.CommandName)
{
case "ValidatePayrate":
//Your ValidatePayRate code here
break;
case "Submit":
// Submit code here
break;
default:
// Default
break;
}
}
如果客户端已关闭javascript,则OnClientClick将不会触发,而OnCommand将触发