2013-08-21 2 views
1

У меня есть гистограмма, содержащая информацию о различных машинах, относящихся к компании.Сохранение диаграммы asp.net в файл

В основном я хочу вывести эту диаграмму в png-файл, но я не могу получить его правильно.

Я искал Google часами, пытаясь найти хороший учебник, но большинство из них используют странные сторонние компоненты для загрузки изображения, и я действительно не хочу этого делать.

это мой код на данный момент:

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(); 
     } 

Am я передавая сохраненное изображение методу писателя должным образом?

+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 у вас все еще есть изменения, которые вам нужно было сделать? –

Смежные вопросы