2013-08-21 86 views
1

我有一個條形圖,包含有關公司的各種機器的信息。保存一個asp.net圖表到文件

基本上我想輸出這個圖表到PNG文件,但我似乎無法得到它輸出正常。

我一直在谷歌搜索幾個小時試圖找到一個很好的教程,但其中大多數使用奇怪的第三方組件來下載圖像,我真的不想這樣做。

這是我的代碼的時刻:

string tmpChartName = "/MachinesByCompanyChart.png"; 

    protected void GenerateBarChartBut_click(object sender, EventArgs e) 
     { 
      Chart1.Visible = false; 
      Chart2.Visible = true; 

      DataTable table = new DataTable(); 

      dal.getTotalAssetsByCompany("table", TAB1CompanyDDL.SelectedItem.Text); 

      table = dal.Results.Tables["table"]; 

      DataView dv = table.DefaultView; 

      Chart2.Series["Series1"].Points.DataBindXY(dv, "AssetType", dv, "Total"); 

      Chart2.Palette = ChartColorPalette.None; 

      Chart2.PaletteCustomColors = myGreenColorPalette; 


      string imgPath2 = Server.MapPath(tmpChartName); 
      Chart2.SaveImage(imgPath2, ChartImageFormat.Png); 
     } 

     protected void ExportAssetsByCompanyBut_click(object sender, EventArgs e) 
     { 

      Response.Clear(); 
      Response.ContentType = Chart1.ImageType.ToString(); 
      Response.AddHeader("Content-Disposition", "attachment; filename=" + tmpChartName); 
      StringWriter stringWrite = new StringWriter(); 
      HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite); 
      string headerTable = @""; 
      Response.Write(headerTable); 
      Response.Write(stringWrite.ToString()); 
      Response.End(); 
     } 

我在保存的圖像傳遞給作家方法是否正確?

+0

您可以提供海圖編( aspx.page方面)? –

+0

我也提供你的代碼。你可以試試這個。 –

回答

4

試試這個,

集圖表的aspx.page

EnableViewState="true" 
ImageStorageMode="UseImageLocation" 

這兩個屬性編寫代碼aspx.cs頁面上

System.IO.MemoryStream imagestream = new System.IO.MemoryStream(); 
Chart1.SaveImage(imagestream, System.Web.UI.DataVisualization.Charting.ChartImageFormat.Png); 
byte[] imageByte = imagestream.ToArray(); 
+0

嗨,是否有其他代碼我應該用這個? –

+0

謝謝manish,這種方法的工作原理,但我需要編輯你的代碼,讓它做我想做的。我將用完整的解決方案編輯你的答案 –

+0

@Kendo你是否還有需要做出的改變? –