0

我在代码隐藏文件中完全动态地生成图表并将图像保存为 jpeg 格式。

Chart Chart1 = new Chart();

Chart1.DataSource = ds.Tables[0];
Chart1.DataBind();
Chart1.Series.Add(new Series());
Chart1.Series[0].ChartType = System.Web.UI.DataVisualization.Charting.SeriesChartType.Pie;
Chart1.Series[0].XValueMember = "bloodType";
Chart1.Series[0].YValueMembers = "Total";

Chart1.ChartAreas.Add(new ChartArea());
Chart1.ChartAreas[0].Area3DStyle.Enable3D = true;
Chart1.ImageType = System.Web.UI.DataVisualization.Charting.ChartImageType.Jpeg;


Chart1.SaveImage("C:\\MyChartImage.jpg", ChartImageFormat.Jpeg);


HtmlTable tbProductImage = new HtmlTable();
HtmlTableRow trImageRow = new HtmlTableRow();



HtmlTableCell tdImageCell = new HtmlTableCell();

//Get generaqted image.
System.Web.UI.WebControls.Image imageVar = new System.Web.UI.WebControls.Image();
imageVar .Visible = true;
imageVar .ImageUrl = "C:\\MyChartImage.jpg";


tdImageCell.Controls.Add(imageVar );
trImageRow.Cells.Add(tdImageCell);

tbProductImage.Rows.Add(trImageRow);
this.Controls.Add(tbProductImage);

图表图像在 C:\ 驱动器中成功生成,但是当我尝试将其放入 HTMl 表格单元格时,没有呈现任何内容。没有显示错误。如何显示图像?请帮忙。

4

2 回答 2

1

为了扩展 Damith 的答案,网站上的路径是相对于您网站的根目录的。这就是你看到tilda时所指的~

Server.MapPath("~/")将始终从代码隐藏中获取您当前所在网站的根文件夹。您需要从那里创建文件夹并保存文件。然后,如果您将文件保存在名为 images 的文件夹中,则可以在 html 中通过相对语法“/images/filename.ext”引用您保存的文件。为什么?因为“/”在 html 中指向您网站的根目录。

您还可以使用Uri对象来创建文件的相对路径,只要将它们保存在网站根目录中的某个位置即可。请参阅MakeRelativeUri

于 2013-09-15T14:33:11.417 回答
1

保存到 Web 应用程序中的 Image 文件夹,如果您没有 image 文件夹,请创建它

Chart1.SaveImage(Server.MapPath("~/Image/MyChartImage.jpg"));

然后

imageVar.ImageUrl = "~/Image/MyChartImage.jpg";

图片 URL likeC:\folder1\....不起作用,你需要给Absolute URLlikehttp://localhost:3458/Image/MyChartImage.jpg或 Relative URL like~/Image/MyChartImage.jpg

于 2013-09-15T13:27:22.747 回答