在Web应用程序中使用C#显示图像

时间:2010-04-28 21:06:26

标签: c# web-applications

我有一个Web应用程序,我构建了一个C#类,生成一个Report。此报告生成需要将近40秒,因为它会搜索数百个文件夹中的某些文件。所以我希望有一种方法可以在此报告生成时显示“正在加载...”图标。我有一个存储在我的Images文件夹中的gif,这将是完美的。我在这一点上所做的研究主要讨论了可以保存图像的图片框和图像控件,但我希望只有一种方法可以在创建报表时在图像上方显示图像。

Web应用程序来自Web ADF Geocortex网站,我再次创建了一个生成此报告的C#类。以下是一些可能有用的代码。

/// <summary>
    /// Generates HTML for the current report using the data in
    /// the given table.
    /// </summary>
    /// <param name="reportLayers">The layers to include in the report.</param>
    /// <returns>
    public override string GenerateReportHtml(List<ReportLayer> reportLayers)
    {
        StringBuilder htmlString = new StringBuilder();
        StringWriter stringWriter = new StringWriter(htmlString);
        HtmlTextWriter writer = new HtmlTextWriter(stringWriter);



        string holdAPI = "";

        List<string> exclusions = GetExcludedFields();

        foreach (ReportLayer layer in reportLayers)
        {
            string[] strFiles = null;
            Boolean val = false;

            if (layer.Layer.Name == "Bottom Hole Location (OP)")
            writer.RenderBeginTag(HtmlTextWriterTag.P); // <p>
            writer.RenderBeginTag(HtmlTextWriterTag.Strong); // <strong>
            writer.Write(layer.Layer.Name);

            writer.RenderEndTag(); // end </strong>
            writer.RenderEndTag(); // end </p>

            writer.WriteBreak(); // <br />
            foreach (ReportFeature feature in layer.ReportFeatures)
            {

            // each feature will be in a table
                writer.RenderBeginTag(HtmlTextWriterTag.Table); // <table>

                foreach (ReportField field in feature.ReportFields)
                {
                    string fieldName = field.Alias;
                    if (!exclusions.Contains(fieldName))
                    {

3 个答案:

答案 0 :(得分:2)

用这个HTML ...

<div id="rpt">
    <img src="Images/Load.Gif" />
</div>

然后在document.ready ..

上使用jQuery ajax post
<script type="text/javascript">
    $(function() {
        $.post("/path/to/report", function(reportHtml) {
            $("#rpt").html(reportHtml);
        });
    });
</script>

当ajax调用返回时,将div html替换为report。这将删除图像。

答案 1 :(得分:1)

水晶报告,SSRS报告,自定义报告?这有所不同,但是如果您可以确定报告何时完成加载。我会考虑使用客户端javascript来显示图像,然后在报告加载完成后删除该图像。除非你给我们一些代码示例或详细说明你的问题,否则真的很难给你更多。

答案 2 :(得分:1)

听起来像是JQuery的工作......这里是an article,我想这会谈到你想要实现的目标。

这就是

  1. 页面加载。 - 将spinner.gif插入包含报告的div的中间
  2. 使用JQuery获取报告网址,将其设置为使用请求的结果填充div。
  3. 当它加载报告时,它应出现在所述div中。