C# 如何创建asp.net图表的副本?
我目前正在为一家公司设计一个基于web的(asp.net/C#)卷跟踪工具,用于报告和呈现卷数据。用户呈现数据的一种方法是使用图表工具,该工具使用asp.net内置图表。用户可以设置大量不同的过滤选项,以适当地自定义图表,然后将其呈现在同一页面上。关于图表的内容,一切都很正常,但是我创建了一些控件,让用户能够生成更高质量的图形图像,并在单独的窗口中显示它们。使用扩展方法进行响应。重定向我正在将用户重定向到一个新窗口,该窗口包含图表图像的高分辨率版本,如下所示:C# 如何创建asp.net图表的副本?,c#,asp.net,C#,Asp.net,我目前正在为一家公司设计一个基于web的(asp.net/C#)卷跟踪工具,用于报告和呈现卷数据。用户呈现数据的一种方法是使用图表工具,该工具使用asp.net内置图表。用户可以设置大量不同的过滤选项,以适当地自定义图表,然后将其呈现在同一页面上。关于图表的内容,一切都很正常,但是我创建了一些控件,让用户能够生成更高质量的图形图像,并在单独的窗口中显示它们。使用扩展方法进行响应。重定向我正在将用户重定向到一个新窗口,该窗口包含图表图像的高分辨率版本,如下所示: private void Down
private void DownloadImage(int width, int height)
{
double scale = width / ViewGraphChart.Width.Value;
// Resize chart:
ViewGraphChart.Width = width;
ViewGraphChart.Height = height;
// Resize titles:
foreach (Title t in ViewGraphChart.Titles)
{
t.Font = new Font(t.Font.FontFamily, (float)(t.Font.Size * scale), FontStyle.Regular);
}
// Resize legends:
foreach (Legend l in ViewGraphChart.Legends)
{
l.Font = new Font(l.Font.FontFamily, (float)(l.Font.Size * scale), FontStyle.Regular);
}
UpdateChart();
// Open image in new window:
Response.Redirect(ViewGraphChart.CurrentImageLocation, "_blank", "");
}
到目前为止还不错,一个新窗口打开了,用户得到了一张高分辨率的图表图像。然而,问题是,工具中的图表也会自然地被修改,显然变得太大,无法正确地放入布局中。我试图通过在重定向后立即重置图表属性来解决这个问题,但是这使得“HD”图表图像在工具内显示为相同的小图表图像。因此,我认为最好的方法是制作图表的副本,修改副本并将其交给用户,而原始图像在工具中保持其小尺寸。考虑到我有大量的数据绑定和其他与我的图表相关的东西,有没有简单的方法可以做到这一点,或者有其他方法可以做到这一点
我有点赶时间,所以如果这件事说得不清楚,请告诉我,我会更详细地解释
问候,,
赌注
编辑:
Response.Redirect扩展方法背后的代码。如果我没记错的话,是从这一页借来的
public static void Redirect(this HttpResponse response, string url, string target, string windowFeatures)
{
if
((String.IsNullOrEmpty(target) || target.Equals("_self", StringComparison.OrdinalIgnoreCase))
&& String.IsNullOrEmpty(windowFeatures))
{
response.Redirect(url);
}
else
{
Page page = (Page)HttpContext.Current.Handler;
url = page.ResolveClientUrl(url); string script;
if (!String.IsNullOrEmpty(windowFeatures))
{
script = @"window.open(""{0}"", ""{1}"", ""{2}"");";
}
else
{
script = @"window.open(""{0}"", ""{1}"");";
}
script = String.Format(script, url, target, windowFeatures);
ScriptManager.RegisterStartupScript(page, typeof(Page), "Redirect", script, true);
}
}
@KnaperKrisp…查看响应会很有帮助。重定向扩展方法codecutely!我已经编辑了我的帖子并添加了代码。