渲染Dundas图表以编程方式抛出异常

问题描述:

我正在制作一个应用程序,它具有相当沉重的(数据意义上)图表,当ASP.NET页面被加载时将呈现,由于这个原因页面需要花费很多时间来加载和显示一个白色屏幕。我为图表使用Dundas图表API。渲染Dundas图表以编程方式抛出异常

作为解决方法,我试图在Ajax调用中加载图表。在这种方法中,我一次渲染整个页面,一旦渲染,我发送一个Ajax调用到服务器进行图表控制。

要呈现的图表控件我使用下面的代码

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();它抛出与以下堆栈跟踪

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()之前呈现的控制,我得到下面的异常在这种情况下也是如此。

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文件,该文件是自动完成的。但我无法找到究竟是什么?

+0

缺少的是页面步骤,如preinit,init,pageload等。在此步骤中,此图表会执行初始化和其他需要运行的内容。 – Aristos

+0

@Aristos,函数'GetSummaryGraph()'正在从'Page_Load'调用。 –

+0

同样的问题。你有没有找到解决方案? –

你得到这个错误是因为那时你要求它的图表控件还没有运行。

此外,你运行你的图表控制到一个字符串,而不是直接在页面上。

考虑两个想法。

醚尝试获得当前图像的URL 您呈现控件后,乙醚你简单,因为控制自动运行到内存并不需要它,你会得到你必须把你的页面上的一个点的HTML 。

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

+0

感谢您的建议,实际上我以同样的方式思考,并试图在获取imageurl之前调用'RenderControl',但RenderControl也会抛出异常。我已经更新了相应的问题,看看 –

+0

感谢您的建议,我用相同的技术使用ASP.NET图表,他们工作正常。 –