ASP.NET AJAX进度条:是否从代码隐藏更新?

ASP.NET AJAX进度条:是否从代码隐藏更新?,asp.net,.net,asp.net-ajax,progress-bar,Asp.net,.net,Asp.net Ajax,Progress Bar,我有一个导入功能,可以在应用程序中导入Excel电子表格。目前它使用FileUpload控件。我上传文件,然后对该文件运行操作。我想通知用户正在进行的操作,以及完成的百分比。我想我可以获取从Excel电子表格中提取的行总数,并在将每条记录插入数据库和更新进度条时不断进行分割 问题是,我似乎找不到任何从代码背后更新进度条的解决方案。我试着用它 这看起来很不错,但我看不出从背后的代码可以让它工作。理论上,我认为将一个值放入页面上的文本框中,并将onchange设置为JavaScript函数以设置百分

我有一个导入功能,可以在应用程序中导入Excel电子表格。目前它使用FileUpload控件。我上传文件,然后对该文件运行操作。我想通知用户正在进行的操作,以及完成的百分比。我想我可以获取从Excel电子表格中提取的行总数,并在将每条记录插入数据库和更新进度条时不断进行分割

问题是,我似乎找不到任何从代码背后更新进度条的解决方案。我试着用它

这看起来很不错,但我看不出从背后的代码可以让它工作。理论上,我认为将一个值放入页面上的文本框中,并将onchange设置为JavaScript函数以设置百分比可以作为一个测试,但即使这样也不能得到预期的结果


关于如何做到这一点,您有什么建议吗?

您应该知道的是,您无法使用标准的FileUpload控件检查文件上载的状态。您可以做的是将文件上传到服务器上,然后使用ODBC连接到它,并开始异步读取和插入数据库中的行(通过向页面发出ajax请求或使用脚本服务)

就进度条而言,您应该只使用CSS进度条(您可以在以下位置找到一个简单的示例:)

然后,您应该使用可以从服务器返回进度状态的方法构建脚本服务(使用web服务):

*.asmx文件应包含以下内容:

[WebMethod]
public int GetStatus()
    {
        int progress = 0; // in percents
        // your server-side code here
        return progress;
    }
<asp:ScriptManager runat="server" ID="ScriptManager">
 <Services>
    <asp:ServiceReference Path="~/services/import.asmx" InlineScript="false" />
 </Services>
</asp:ScriptManager>
您的aspx页面应包含以下内容:

[WebMethod]
public int GetStatus()
    {
        int progress = 0; // in percents
        // your server-side code here
        return progress;
    }
<asp:ScriptManager runat="server" ID="ScriptManager">
 <Services>
    <asp:ServiceReference Path="~/services/import.asmx" InlineScript="false" />
 </Services>
</asp:ScriptManager>
您可以扩展onSuccess JavaScript函数,当进度完成时(返回值为100%),您可以根据需要将用户重定向到另一个页面或显示信息或按钮

我希望这有帮助