簡體   English   中英

從代碼后面更新文本框

[英]update textbox from code behind

我正在將應用程序轉換為ASP.NET網站。 該頁面的工作方式是,用戶在框中放入計算機列表,然后單擊“開始”,遍歷該列表運行檢查,並將狀態和結果輸出到左側的文本框中。 另外,它在運行檢查時將處理圖標放在檢查標記旁邊,並在檢查完成后將其刪除。 在我的.NET應用程序中,它工作正常,但是我不知道如何在ASP.NET中做到這一點。

我嘗試使用Ajax控件執行此操作,因此我將狀態框包含在更新面板中,並放置了一個計時器,用於每秒更新一次面板。

在后面的代碼中,現在我有一個函數,可以將一些測試文本放到結果文本面板中,同時還有3秒鍾的停頓以模擬背景中的代碼。 但是,直到功能完成而不是每次更新文本時,它才更新面板。

在經典的ASP中,我會將狀態寫到文本文件或DB中,然后將頁面設置為定期重新加載並檢索信息,直到打完完成標志,然后停止重新加載。 如果可以的話,我試圖避免進行所有這些回撥。 我希望有一種更好的方法,但是如果沒有,我只能打電話給更新面板,但是我仍然不確定如何打開和關閉處理圖標。

頁碼

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

背后的代碼

protected void Page_Load(object sender, EventArgs e)
{

}
    protected void StartCheck(object sender,EventArgs e)
{
    Load1.Visible = true;
    Load2.Visible = true;
    txtStatus.Text = "Test 1";

    System.Threading.Thread.Sleep(3000);
    txtStatus.Text += "Test 2";

    System.Threading.Thread.Sleep(3000);
    txtStatus.Text += "Test 3";

    System.Threading.Thread.Sleep(3000);
    Load1.Visible = false;
    Load2.Visible = false;
}
protected void StatusTimer_Tick(object sender, EventArgs e)
{
    StatusPanel.Update();
}

因此看來問題出在“開始”按鈕的功能上。

如果您僅添加:

txtStatus.Text += "Tick\n";

到滴答聲事件,您可以看到頁面正在更新。

問題是單擊按鈕后,直到StartCheck功能完成(即使停止StartCheck ,頁面也不會收到響應。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM