C# 从代码隐藏更新文本框
我正在将应用程序转换为ASP.NET网站。该页面的工作方式是,用户在框中输入一个机器列表,然后单击开始,它在列表中运行检查,并将状态和结果输出到左侧的文本框中。此外,在运行检查时,它会在复选标记旁边放置一个处理图标,并在检查完成时将其删除。在我的.NET应用程序中,它工作得很好,但我不知道如何在ASP.NET中实现它 我尝试使用Ajax控件来实现这一点,因此我将状态框包含在更新面板中,并放置了一个计时器,该计时器每秒更新一次面板 在后面的代码中,现在我有一个函数,它只是将一些测试文本右键输出到结果文本面板,并在后台暂停3秒钟以模拟代码。但是,在函数完成之前,它不会更新面板,而不是每次更新文本时 在经典ASP中,我会将状态写入文本文件或数据库,然后将页面设置为定期重新加载,并检索信息,直到点击“完成”标志,然后停止重新加载。如果我能帮忙的话,我会尽量避免回那些电话。我希望有更好的方法,但如果没有,我可以只回拨更新面板,但我仍然不能完全确定如何打开和关闭处理图标 页面代码C# 从代码隐藏更新文本框,c#,asp.net,ajax,textbox,C#,Asp.net,Ajax,Textbox,我正在将应用程序转换为ASP.NET网站。该页面的工作方式是,用户在框中输入一个机器列表,然后单击开始,它在列表中运行检查,并将状态和结果输出到左侧的文本框中。此外,在运行检查时,它会在复选标记旁边放置一个处理图标,并在检查完成时将其删除。在我的.NET应用程序中,它工作得很好,但我不知道如何在ASP.NET中实现它 我尝试使用Ajax控件来实现这一点,因此我将状态框包含在更新面板中,并放置了一个计时器,该计时器每秒更新一次面板 在后面的代码中,现在我有一个函数,它只是将一些测试文本右键输出到结
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default4.aspx.cs" Inherits="Default4" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<div>
<table class="Standard">
<tr>
<td colspan="2">
<div class="Title">
Title
</div>
</td>
</tr>
<tr>
<td class="Column1">
<div style="text-align: center;">
Input Devices to Check<br />
<br />
<asp:TextBox ID="txtMachineList" runat="server" TextMode="MultiLine" Rows="12"
Width="200px"></asp:TextBox>
<asp:Button ID="btnStart" CssClass="button_blue_small" runat="server" Text="Start" OnClick="StartCheck" /><br />
<br />
</div>
<table>
<tr>
<td>
<asp:CheckBox runat="server" ID="chkOne" Text="Check 1" />
</td>
<td>
<asp:Image ID="Load1" runat="server" ImageUrl="Images/flower-loader.gif" Visible="false" />
</td>
</tr>
<tr>
<td>
<asp:CheckBox runat="server" ID="chkTwo" Text="Check 2" />
</td>
<td>
<asp:Image ID="Load2" runat="server" ImageUrl="Images/flower-loader.gif" Visible="false" />
</td>
</tr>
</table>
</td>
<td class="Column2">Status:<br />
<asp:UpdatePanel ID="StatusPanel" runat="server" UpdateMode="Conditional">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="StatusPanelTimer" EventName="Tick" />
</Triggers>
<ContentTemplate>
<asp:TextBox ID="txtStatus" runat="server" Columns="300" Enabled="True" ReadOnly="True"
Width="800px" TextMode="MultiLine" Rows="35"></asp:TextBox>
<asp:Timer ID="StatusPanelTimer" runat="server" Interval="1000" OnTick="StatusTimer_Tick"></asp:Timer>
</ContentTemplate>
</asp:UpdatePanel>
</td>
</tr>
</table>
</div>
</form>
</body>
</html>
所以问题似乎出在“开始”按钮的功能上 如果您只是添加:
txtStatus.Text += "Tick\n";
对于勾号事件,您可以看到页面正在更新
问题是,单击按钮后,直到
开始检查功能完成(甚至滴答声停止),页面才会收到响应。将计时器
放入更新面板的内容模板
中,然后删除更新模式
,我就是这样做的,在类似的设置下,每秒钟更新一次。这有什么变化吗?@kschieck-我收到一条客户端错误消息-错误:Sys.WebForms.PageRequestManagerServerErrorException:只有在UpdateMode设置为Conditional时,才能在ID为“StatusPanel”的UpdatePanel上调用Update方法。@kschieck我将更新模式改回Conditional,并且客户端错误消失了,但在整个函数完成之前它仍然不会更新。您的意思是将间隔设置为10000
?在你的问题中,你提到它应该每秒钟刷新一次,而10000
实际上是10秒。好吧,现在我看到了,这是有道理的。我必须弄清楚我想如何处理这件事。
txtStatus.Text += "Tick\n";