2013-03-05 62 views
3

我想,當我點擊網頁(asp.net網站)按啓動鍵啓動進程現在我想設置進程啓動標籤文本。當過程結束時,我想將標籤文本設置爲「處理已完成」。如何在asp.net和C#中做到這一點。如何在網站的過程結束時顯示消息?

在此先感謝。

+1

你使用更新面板或任何Ajax/jQuery? – jason 2013-03-05 11:53:01

回答

0

使用JavaScript做回調。並在每個階段;啓動,完成或錯誤;更新你的HTML標籤。如果您使用jQuery AJAX查找一些示例,這應該相當簡單。

jQuery AJAX POST example

0

在代碼隱藏補充一點:

ScriptManager.RegisterStartupScript(this, GetType(), "Records Inserted Successfuly", "Showalert();", true); 

JAVASCRIPT在源代碼中添加這個(CSS):

function Showalert() { 
      alert('Records inserted Successfully!'); 
     } 

,做使用的System.Web.UI增加;

OR

您可以將標籤簡單地添加到像這樣的ASPX網頁表單..

<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> 

和代碼隱藏aspx.cs加..

Labelname.Text = "whatever msg you wanna display." 
+0

我編輯了我的答案,告訴我你是否仍然有任何問題..! – Arbaaz 2013-03-05 13:15:35

0

如果你不想使用javascript ...你可以做的是當按鈕點擊事件被觸發時首先改變標籤文本。

lblLabel.text="process started" 

和button_click最後一行的事件應該是這樣的:

lblLable.text="process completed"; 
3

你可能要考慮使用ASP.NET SignalR。下面是它做什麼摘要:

ASP.NET SignalR是ASP.NET開發人員的一個新的圖書館,它使 太簡單了實時網絡功能添加到您的應用程序 。什麼是「實時網絡」功能?這是讓你的服務器端代碼推送內容到連接 客戶,因爲它發生在實時的 能力。

以下是一個簡單網頁的例子,其中一個按鈕開始於Notepad.exe。一旦這個過程開始時,頁面上的標籤顯示process started。當進程退出(Notepad是封閉的),標籤的更新process exited

因此,首先創建一個ASP.NET空web應用程序項目(我們將其命名爲MyWebApplication)並獲取Microsoft ASP.NET SignalR NuGet package。 Web表單添加到項目並將其命名爲測試。將以下代碼添加到測試。ASPX文件

<%@ Page Language="C#" AutoEventWireup="true" 
    CodeBehind="Test.aspx.cs" Inherits="MyWebApplication.Test" %> 
<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
    <script src="http://code.jquery.com/jquery-1.8.2.min.js" 
     type="text/javascript"></script> 
    <script src="Scripts/jquery.signalR-1.0.1.js" type="text/javascript"></script> 
    <script src="/signalr/hubs" type="text/javascript"></script> 
    <script type="text/javascript"> 
     $(function() { 
      // Proxy created on the fly   
      var chat = $.connection.chat; 
      // Declare a function on the chat hub so the server can invoke it   
      chat.client.addMessage = function (message) { 
       $('#label').text(message); 
      }; 
      // Start the connection 
      $.connection.hub.start(); 
     }); 
    </script> 
</head> 
<body> 
    <form id="form1" runat="server"> 
     <asp:ScriptManager runat="server" /> 
     <div> 
      <asp:UpdatePanel runat="server"> 
       <ContentTemplate> 
        <asp:Button runat="server" Text="Start Notepad.exe" 
         ID="button" OnClick="button_Click" /> 
       </ContentTemplate> 
       <Triggers> 
        <asp:AsyncPostBackTrigger 
         ControlID="button" EventName="Click" /> 
       </Triggers> 
      </asp:UpdatePanel> 
      <span id="label"></span> 
     </div> 
    </form> 
</body> 
</html> 

添加一個新的類文件到您的項目並將其命名爲Chat。在Chat.cs你將有:

using Microsoft.AspNet.SignalR; 

namespace MyWebApplication 
{ 
    public class Chat : Hub 
    { 
     public void Send(string message) 
     { 
      //Call the addMessage method on all clients  
      var c = GlobalHost.ConnectionManager.GetHubContext("Chat"); 
      c.Clients.All.addMessage(message); 
     } 
    } 
} 

添加以下到Test.aspx.cs文件:

using System; 
using System.Diagnostics; 
using Microsoft.AspNet.SignalR; 

namespace MyWebApplication 
{ 
    public partial class Test : System.Web.UI.Page 
    { 
     Chat chat = new Chat(); 

     protected void Page_Load(object sender, EventArgs e) 
     { 
     } 

     void MyProcess_Exited(object sender, EventArgs e) 
     { 
      chat.Send("process exited"); 
     } 

     protected void button_Click(object sender, EventArgs e) 
     { 
      Process MyProcess = new Process(); 
      MyProcess.StartInfo = new ProcessStartInfo("notepad.exe"); 
      MyProcess.EnableRaisingEvents = true; 
      MyProcess.Exited += MyProcess_Exited; 
      MyProcess.Start(); 
      chat.Send("process started"); 
     } 
    } 
} 

添加的Global.asax文件

using System; 
using System.Web.Routing; 

namespace MyWebApplication 
{ 
    public class Global : System.Web.HttpApplication 
    { 
     protected void Application_Start(object sender, EventArgs e) 
     { 
      RouteTable.Routes.MapHubs(); 
     } 
    } 
} 

我還沒有涉及的一些東西:

  1. 標籤在所有連接上更新。
  2. 我不驗證過程是否已經運行(但這應該不是很難檢查)。
相關問題