Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.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 - Fatal编程技术网

C# 被回帖卡住了

C# 被回帖卡住了,c#,asp.net,ajax,C#,Asp.net,Ajax,我创建了一个运行大量检查的站点。这些检查是通过一个按钮开始的,需要几分钟才能完成(基本上是执行一些数据检查,写入mysql数据库)。然后,我将gridview控件绑定到mysql数据库,检查完成后,页面刷新,gridview更新。。太好了 这一切都很好,除了我不能告诉用户发生了什么 一旦选中该按钮,站点将进入长时间刷新状态。我不能更新页面上的任何标签来表示它正在运行,等等。所有标签都会在c代码完成后更新 我在服务器上尝试了一个c#后台工作者来处理长时间运行的任务,希望页面会返回,标签会更新(然后

我创建了一个运行大量检查的站点。这些检查是通过一个按钮开始的,需要几分钟才能完成(基本上是执行一些数据检查,写入mysql数据库)。然后,我将gridview控件绑定到mysql数据库,检查完成后,页面刷新,gridview更新。。太好了

这一切都很好,除了我不能告诉用户发生了什么

一旦选中该按钮,站点将进入长时间刷新状态。我不能更新页面上的任何标签来表示它正在运行,等等。所有标签都会在c代码完成后更新

我在服务器上尝试了一个c#后台工作者来处理长时间运行的任务,希望页面会返回,标签会更新(然后在后台工作者完成事件中绑定数据网格),但没有乐趣。。页面只等待后台工作程序完成

我也尝试过添加一个更新面板,在面板内添加一个标签,然后调用panel.update(),但同样,在所有代码退出之前,实际上不会更新


有什么非技术性的想法吗?所有代码都添加了,非常感谢。

我认为最简单的方法是使用预先制作的“UpdateProgress”控件

制作一个新的页面,并启动我刚刚制作的示例来演示这个想法。单击按钮时,页面具有加载文本,五秒钟后页面内容更改,加载消息消失:

ASP内容:

    <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>

    <asp:UpdateProgress AssociatedUpdatePanelID="UpdatePanel1" runat="server">
        <ProgressTemplate>
            <p>text that indicates stuff is happening in the background (example: loading please wait)</p>         
        </ProgressTemplate>
    </asp:UpdateProgress>


    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>

            <asp:Button ID="Button1" runat="server" Text="Click me!" 
                onclick="Button1_Click" />
            <br />
            <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>        

        </ContentTemplate>
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="Button1" EventName="Click" />
        </Triggers>
    </asp:UpdatePanel>

如果您有任何问题,请让我知道,但这应该是相当不言自明的,可以在您刚刚添加的任何代码中实现ScriptManager、UpdateProgress控件和您自己的加载文本,并将您的代码放在按钮中,然后单击“代码隐藏”。

是,我添加了一个scriptmanager,但它似乎不起作用。所以你是说我需要从ajax控件而不仅仅是按钮启动我的c#代码?使用scriptmanager对asp.net中的UpdatePanel进行一些初步阅读。只需使用google ASP.net updatepanel,您就需要在updatepanel中抛出某种gridview控件。在updatepanel中,您可以有一个进度条或标签,在数据更新时进行更新。好的,我明白了。我添加了一个带有标签的updatepanel,当我按下更新面板中的按钮时,该标签会更新,但直到任务完成后才会更新。在按钮中单击“我已更新标签”,然后通过睡眠复制任务。直到任务完成,页面才会更新。所以,如果我从更新面板中调用另一个过程,在任务完成之前,它仍然不会更新?我想单击按钮,更新页面,说明作业正在运行,然后运行作业。
    protected void Button1_Click(object sender, EventArgs e)
    {
        //wait five seconds to demonstrate the idea
        System.Threading.Thread.Sleep(5000);

        //update page content
        Label1.Text = "Stuff in the background has finished executing and the page has been loaded with the new content.";
    }