我有一个运行一系列任务的进程,并且每个任务都更新一个文本框,但是我的问题是屏幕无法加载,直到完成所有任务,我需要将它们看作他们发生。在我以前的VBA语言中,这可能是DoEvents
或Me.Repaint
。我做错了什么,导致我的文本框不显示每次发送内容时发送给它的内容?刷新屏幕上的文本框
这是在ASP.net和C#中。这是aspx页面: -
<%@ Page Title="ASC Open" Language="C#" AutoEventWireup="true" CodeBehind="ASC_OSC.aspx.cs" Inherits="HICS.ASC_OSC" %>
<head runat="server">
<title>HICS</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<asp:PlaceHolder runat="server">
<%: Scripts.Render("~/bundles/modernizr") %>
</asp:PlaceHolder>
<webopt:BundleReference runat="server" Path="~/Content/css" />
</head>
<body style="padding-top: 5px">
<form id="main" runat="server">
<div class="container-fluid" style="padding-top: 0px">
<h1>Open Access Supply Chain</h1>
<hr />
<div class="container-fluid">
<div ID="ContRow" class="row">
<div class="col-md-12">
<asp:TextBox ID="TxtStatus" runat="server" Height="80%" Width="80%" ReadOnly="true" Wrap="true" AutoPostBack="false" TextMode="MultiLine"></asp:TextBox>
</div>
</div>
</div>
</div>
</form>
</body>
这是C#代码段(不是所有的显示,因为它是代表),它是TxtStatus
我在乎现在。
using System;
//using System.Collections.Generic;
//using System.Linq;
//using System.Web;
using System.Web.UI;
//using System.Web.UI.WebControls;
//using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.Diagnostics;
using System.Runtime.InteropServices;
namespace HICS
{
public partial class ASC_OSC : Page
{
protected void Page_Load(object sender, EventArgs e)
{
SqlDataReader RS;
int IntPort;
int IntEnvironment;
bool BlnOK;
string StrEnvironmentName;
string StrEnvironmentDB;
Database DB_ASC = new Database();
if (!IsPostBack)
{
BlnOK = true;
TxtStatus.Text += "Getting Port: ";
string StrReturn = home.Procs.UserSetting("ASC_Port");
if (StrReturn == "" || StrReturn == "0")
{
RS = home.DB_HICS.GetRS("SELECT MAX([ASC_Port]) FROM [Tb_Users]");
RS.Read();
IntPort = (RS.GetInt32(0) < 4444)? 4444 : RS.GetInt32(0) + 1;
home.Procs.UserSetting("ASC_Port", IntPort.ToString());
RS.Close();
}
else
{
IntPort = Convert.ToInt32(StrReturn);
}
TxtStatus.Text += String.Concat(IntPort.ToString() , Environment.NewLine);
TxtStatus.Text += "Getting Environment: ";
IntEnvironment = 0;
StrReturn = home.Procs.UserSetting("ASC_Environment");
if (StrReturn == "" || StrReturn == "0")
{
RS = home.DB_HICS.GetRS("SELECT MIN([ID]) FROM [Tb_ASC_Environments]");
RS.Read();
if (RS.IsDBNull(0))
{
BlnOK = false;
}
else
{
IntEnvironment = RS.GetInt32(0);
home.Procs.UserSetting("ASC_Environment", IntEnvironment.ToString());
}
RS.Close();
}
else
{
IntEnvironment = Convert.ToInt32(StrReturn);
RS = home.DB_HICS.GetRS("SELECT COUNT([ID]) FROM [Tb_ASC_Environments] WHERE [ID] = " + IntEnvironment);
RS.Read();
if (RS.GetInt32(0)==0)
{
RS.Close();
RS = home.DB_HICS.GetRS("SELECT MIN([ID]) FROM [Tb_ASC_Environments]");
RS.Read();
if (RS.IsDBNull(0))
{
BlnOK = false;
}
else
{
IntEnvironment = RS.GetInt32(0);
home.Procs.UserSetting("ASC_Environment", IntEnvironment.ToString());
}
}
RS.Close();
}
TxtStatus.Text += String.Concat((BlnOK)?IntEnvironment.ToString():"Error", Environment.NewLine);
if (BlnOK)
{
RS = home.DB_HICS.GetRS("SELECT [Name],[Database] FROM [Tb_ASC_Environments] WHERE [ID] = " + IntEnvironment);
RS.Read();
StrEnvironmentName = RS.GetString(0);
StrEnvironmentDB = RS.GetString(1);
TxtStatus.Text += String.Concat("Environment Name: ", StrEnvironmentName, Environment.NewLine);
TxtStatus.Text += String.Concat("Environment Database: ", StrEnvironmentDB, Environment.NewLine);
TxtStatus.Text += "Connecting to ASC Database: ";
}
}
}
}
}
您将不得不在后台启动进程,并使用AJAX请求轮询不同端点以查看状态(例如,使用jQuery),以更新文本框。 – ps2goat
啊哇,这听起来很复杂:(真的希望留在ASP.NET和C# –
这是可行的在ASP.NET和C# - 只需添加一点点的JS混合。 – Filburt