Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.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# asp.net中文本框的异步输出_C#_Asp.net_Ajax_Visual Studio - Fatal编程技术网

C# asp.net中文本框的异步输出

C# asp.net中文本框的异步输出,c#,asp.net,ajax,visual-studio,C#,Asp.net,Ajax,Visual Studio,我在asp.net项目中运行了一个foreach循环,该项目在服务器端运行 循环的每次迭代完成后,我想更新客户端web浏览器上的textbox consolebox.text,以便用户可以看到循环已完成 它只在函数完成后更新文本框,因此用户在整个foreach完成之前不会看到进度输出。下面是我的代码,我尝试过ajax updatepanels,但没有效果 protected void Button1_Click(object sender, EventArgs e) {

我在asp.net项目中运行了一个foreach循环,该项目在服务器端运行

循环的每次迭代完成后,我想更新客户端web浏览器上的textbox consolebox.text,以便用户可以看到循环已完成

它只在函数完成后更新文本框,因此用户在整个foreach完成之前不会看到进度输出。下面是我的代码,我尝试过ajax updatepanels,但没有效果

 protected void Button1_Click(object sender, EventArgs e)
    {

        consolebox.Text = "Please Wait........"+ Environment.NewLine;


            foreach (var listBoxItem in serverlist.Items)
                {
                    string send = listBoxItem.ToString();
                    DELETEPROFILE(send);
                    consolebox.Text += ("" + send + "........Complete" + Environment.NewLine);

                }


    }

您可以通过web服务来实现这一点。使用ajax启动功能,使用其他服务读取功能

样本:

Aspx


我认为最简单的方法是在调用服务器端之前通过javascript更新文本框
<script type = "text/javascript">
        function ajaxCall(fsMathod) {
            $.ajax({
                type: "POST",
                url: "Test.aspx/" + fsMathod,
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: OnSuccess,
                failure: function (response) {
                    alert(response.d);
                }
            });
        }
        function OnSuccess(response) {
            alert(response.d);
            var TheTextBox = document.getElementById("<%=consolebox.ClientID%>");
            TheTextBox.value = TheTextBox.value + response.d;
        }
    </script>
    <body>
    <form id="form1" runat="server">
    <div style="margin:0 auto; width:20%">
        Textbox: <asp:TextBox ID="consolebox" TextMode="MultiLine" runat="server"></asp:TextBox>
        <br />

        <input id="btnStartAsync" type="button" value="Start Async" onclick = "ajaxCall('startAsync');" />
        <input id="btnReadAsync" type="button" value="Read Async" onclick = "ajaxCall('readAsync')" />

    </div>

    </form>
</body>
static string CompletedItems = "";
[System.Web.Services.WebMethod]
        public static string readAsync()
        {
            return "" + CompletedItems + "........Complete\n";
        }

        [System.Web.Services.WebMethod]
        public static void startAsync()
        {
            asyncTask();
        }

        private static void asyncTask()
        {
            foreach (var listBoxItem in serverlist.Items)
            {
                string send = listBoxItem.ToString();
                DELETEPROFILE(send);
                //consolebox.Text += ("" + send + "........Complete" + Environment.NewLine);
                CompletedItems += send + ",";
            }
        }