Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从代码隐藏更新文本框_C#_Asp.net_Ajax_Textbox - Fatal编程技术网

C# 从代码隐藏更新文本框

C# 从代码隐藏更新文本框,c#,asp.net,ajax,textbox,C#,Asp.net,Ajax,Textbox,我正在将应用程序转换为ASP.NET网站。该页面的工作方式是,用户在框中输入一个机器列表,然后单击开始,它在列表中运行检查,并将状态和结果输出到左侧的文本框中。此外,在运行检查时,它会在复选标记旁边放置一个处理图标,并在检查完成时将其删除。在我的.NET应用程序中,它工作得很好,但我不知道如何在ASP.NET中实现它 我尝试使用Ajax控件来实现这一点,因此我将状态框包含在更新面板中,并放置了一个计时器,该计时器每秒更新一次面板 在后面的代码中,现在我有一个函数,它只是将一些测试文本右键输出到结

我正在将应用程序转换为ASP.NET网站。该页面的工作方式是,用户在框中输入一个机器列表,然后单击开始,它在列表中运行检查,并将状态和结果输出到左侧的文本框中。此外,在运行检查时,它会在复选标记旁边放置一个处理图标,并在检查完成时将其删除。在我的.NET应用程序中,它工作得很好,但我不知道如何在ASP.NET中实现它

我尝试使用Ajax控件来实现这一点,因此我将状态框包含在更新面板中,并放置了一个计时器,该计时器每秒更新一次面板

在后面的代码中,现在我有一个函数,它只是将一些测试文本右键输出到结果文本面板,并在后台暂停3秒钟以模拟代码。但是,在函数完成之前,它不会更新面板,而不是每次更新文本时

在经典ASP中,我会将状态写入文本文件或数据库,然后将页面设置为定期重新加载,并检索信息,直到点击“完成”标志,然后停止重新加载。如果我能帮忙的话,我会尽量避免回那些电话。我希望有更好的方法,但如果没有,我可以只回拨更新面板,但我仍然不能完全确定如何打开和关闭处理图标

页面代码

<%@ 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";