2017-09-13 125 views
0

我使用ASP.NET進行開發。 在這裏,我想要的是,一旦我點擊按鈕A(按鈕A上的文本是「開始」),則按鈕A上的文本將變爲「正在處理...請稍候」,並且按鈕A將變爲不可點擊。然後執行存儲過程(存儲過程的持續時間爲1分鐘)。存儲過程完成後,按鈕A上的文本將變爲「開始」,按鈕A將變爲可點擊。更改按鈕上的文本和點擊按鈕後啓用狀態(asp.net)

我想,存儲過程之前,我添加了這些代碼:

ButtonA.Text = "processing...please wait"; 
ButtonA.Enabled = false; 

和存儲過程後,我添加了這些代碼:

ButtonA.Text = "Start"; 
ButtonA.Enabled = true; 

但結果是在按鈕上的文本在存儲過程執行期間,按鈕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> 

但按鈕上的文字仍然保持不變,按鈕仍是可以點擊的。

+1

這是行不通的。在頁面完成加載併發送給客戶端後,UI僅更新一次。它不會在兩者之間更新。如果你想改變這樣的Button文本,你將不得不使用Ajax。 – VDWWD

+0

你能告訴我如何使用Ajax做到這一點嗎?我是Ajax新手。謝謝 –

+0

您可以使用Ajax來實現。爲此,請將組件放在'UpdatePanel'控件中。在你的情況下,你會把'Buttons'放入UpdatePanel中。所以無論何時你點擊'ButtonA',你的請求都會被處理,你將得到服務器的迴應。請注意'UpdatePanel'內只有控件會被更新。 –

回答

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#代碼

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; 
    } 


希望幫助,謝謝。

+0

我添加了ScriptManager和UpdatePanel部分,結果沒有任何反應,即使我點擊了按鈕。你知道有什麼問題嗎?謝謝。 –

+0

請更新您的代碼。 –

+0

我引用了你的解決方案和其他人的解決方案,但仍然無法工作。我已經更新了我的代碼。 –