我使用ASP.NET进行开发。 在这里,我想要的是,一旦我点击按钮A(按钮A上的文字是"开始"),按钮A上的文字将变为"处理...请等待"和按钮A将无法点击。然后执行存储过程(存储过程的持续时间为1分钟)。存储过程完成后,按钮A上的文本将变为"开始"和按钮A将变为可点击。
我在存储过程之前尝试过,我添加了这些代码:
ButtonA.Text = "processing...please wait";
ButtonA.Enabled = false;
在存储过程之后,我添加了以下代码:
ButtonA.Text = "Start";
ButtonA.Enabled = true;
但结果是按钮A上的文本未更改,并且在存储过程执行期间按钮A仍可单击。 有谁能告诉我如何实现我想要的?感谢。
然后我将我的aspx文件编辑为:
<asp:ScriptManager ID="MainScriptManager" runat="server"/>
<asp:UpdatePanel ID="pnlHelloWorld" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true">
<ContentTemplate>
<asp:Button ID="ButtonA" runat="server" OnClick="ButtonA_Click" Text="Start" />
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="ButtonA" EventName="Click"/>
</Triggers>
</asp:UpdatePanel>
但按钮的文字仍保持不变,按钮仍可点击。
答案 0 :(得分:0)
您可以使用Ajax来实现您的要求。使用Ajax,您可以进行部分页面刷新。
将ButtonA
放在UpdatePanel
内,它应该按预期工作。
您可以参考以下示例代码以供参考。
webpage.aspx代码
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Hello, world!</title>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="MainScriptManager" runat="server" />
<asp:UpdatePanel ID="pnlHelloWorld" runat="server">
<ContentTemplate>
<asp:Button runat="server" ID="ButtonA" OnClick="btnHelloWorld_Click" Text="Update label!" />
</ContentTemplate>
</asp:UpdatePanel>
</form>
</body>
</html>
c#code
protected void btnHelloWorld_Click(object sender, EventArgs e)
{
//Before Procedure call
ButtonA.Text = "processing...please wait";
ButtonA.Enabled = false;
//Call Procedure
procedure ....
//After Prodedure call
ButtonA.Text = "Start";
ButtonA.Enabled = true;
}
希望有所帮助,谢谢。