首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以编程方式呈现Dundas图抛出异常

以编程方式呈现Dundas图抛出异常
EN

Stack Overflow用户
提问于 2012-06-04 10:18:15
回答 1查看 1.2K关注 0票数 1

我正在制作一个应用程序,在加载ASP.NET页面时会呈现相当大的图表(在数据意义上),因为这个页面需要很长的时间才能加载,并且显示了一个白色的屏幕。我的图表使用邓达斯图表API。

作为一种解决办法,我试图在Ajax调用中加载图表。在这种方法中,我立即呈现整个页面,一旦呈现,我就向服务器发送Ajax调用以进行图表控制。

若要呈现图表控件,请使用以下代码

代码语言:javascript
复制
private string GetSummaryGraph()
    {
        Chart chart_analysis = new Chart();
        chart_analysis.ID = "chart_analysis_1";
        chart_analysis.BackColor = Color.Black;
        chart_analysis.EnableViewState = true;
        chart_analysis.Height = 217;
        chart_analysis.ImageStorageMode = ImageStorageMode.UseImageUrl;
        chart_analysis.ImageUrl = "~/MyApp/ChartImages/MyChart_#SEQ(1000,720)";
        chart_analysis.ImageType = ChartImageType.Png;
        chart_analysis.Palette = ChartColorPalette.Dundas;
        chart_analysis.ViewStateContent = SerializationContent.All;
        chart_analysis.Width = 996;

        // Set all styling here, like ChartAreas, Series.

        string chartImgURL = chart_analysis.GetCurrentImageUrl(); // this line throws exception "Object reference not set to instance of object"

        string html_chart = "";
        StringWriter sw = new StringWriter();
        HtmlTextWriter htw = new HtmlTextWriter(sw);
        chart_analysis.RenderControl(htw);

        html_chart = sw.ToString();
        return html_chart;
}

由于某些原因,当我调用函数chart_analysis.GetCurrentImageUrl();时,它将抛出带有以下堆栈跟踪的异常

代码语言:javascript
复制
Object reference not set to an instance of an object.
at Dundas.Charting.WebControl.Chart.a(String )
   at Dundas.Charting.WebControl.Chart.GetCurrentImageUrl()
   at GetSummary.GetSummaryGraph() in D:\Projects\MyApp\GetSummary.aspx.cs:line 4492

但是,如果我将图表控件放置在.aspx页面而不是.aspx.cs文件中,则此函数可以正常工作。

编辑

我还尝试在调用GetCurrentImageURL()之前呈现控件,在本例中我也得到了以下异常。

代码语言:javascript
复制
Object reference not set to an instance of an object.
   at Dundas.Charting.WebControl.Chart.a(String )
   at Dundas.Charting.WebControl.Chart.GetCurrentImageUrl()
   at Dundas.Charting.WebControl.Chart.Render(HtmlTextWriter output)
   at System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter)
   at System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter)
   at System.Web.UI.Control.RenderControl(HtmlTextWriter writer)
   at GetSummary.GetSummaryGraph() in D:\Projects\MyApp\GetSummary.aspx:line 4494
   at GetSummary.LoadChartData() in D:\Projects\MyApp\GetSummary.aspx:line 4378

看起来我缺少一些初始化,当图表放在.aspx文件中时,初始化就会自动完成。但我找不到这到底是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-04 10:27:08

您会得到这个错误,因为当时您要求它,图表控制还没有运行。

此外,还可以将图表控件运行到字符串中,而不是直接在页面上。

考虑两个想法。

以太尝试在呈现控件之后获取当前图像url ,简单的以太不需要它,因为控件会自动进入内存,并得到必须放在页面点上的html。

在任何情况下,您都需要运行控制步骤以使其参数可用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10879711

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档