【TeeChart Pro ActiveX教程】(九):TeeChart、WebChart和ASP(下)

在WebForm中使用WebChart的另一种方法是在标准的asp(aspx)页面中使用TeeChart作为脚本化的“non-visible/不可见”控件。

下载TeeChart Pro ActiveX最新版本

免费脚本化的ASP应用程序

在WebForm中使用WebChart的另一种方法是在标准的asp(aspx)页面中使用TeeChart作为脚本化的“non-visible/不可见”控件。TeeChart for .NET附带了一个实例来演示这种技术。您可以在TeeChart的ASP.NET演示项目中找到它,在“Interacting with ChartsChart as Image/与图表交互图表作为图像”演示文件夹下,标题为“Series Types as Image/系列类型为图像”的示例

TeeChart可以通过内部Chart类在ASP中自由编写脚本,虽然为了利用TeeChart事件,我们建议使用TChart Windows窗体组件或WebChart控件

将图表添加到脚本中

假设使用TChart,您需要采取的初始步骤来设置TeeChart项目:

  1. 创建新的ASP.NET Forms项目。这将创建一个WebForm页面,您将其用作客户端页面。(参见示例SeriesTypes.aspx页面)
  2. 添加新的WebForm页面。此页面将不可见,将用于处理图表代码服务器端。(请参阅示例ShowSeries.aspx页面)- 该页面应包含对System.Windows.Forms.dll的引用。这是因为TChart组件是基于Windows.Forms的组件。
  3. 按照此处和ASPStreams示例中突出显示的代码步骤,作为如何设置项目的指南。

流程

客户端浏览器页面(SeriesTypes.aspx)包含一个IMG链接是aspx服务器脚本(ShowSeries.aspx)的图像。客户端页面上的提交按钮调用服务器脚本,其中包含参数化serverChart处理所需的变量。该按钮将变量作为参数的一部分发送,以设置客户页面图表图像的imageURL,因此返回基于处理参数的动态图表。

teechart

使用TeeChart进行编码

要使用TeeChart服务器代码,请在脚本页面上添加使用TeeChart,例如:

using Steema.TeeChart;

然后为TChart声明一个变量,并在Page_Load事件的开头创建它,例如:

private TChart tChart;         private void Page_Load(object sender, System.EventArgs e)        {            tChart=new TChart();            /* ...add Series and data, etc ... */        } 

图表检索的关键代码元素

关键代码组件是:

1。客户端“Get”指令。这可以通过提交按钮或其他方式(例如Combobox)启动,并根据客户端参数从服务器“Get”图表。对图表的请求可以作为传统的Get url行发送,其中参数作为一个URL行传递,或者可以通过ASP.NET的“Passing Server Control Values Between Pages/在页面之间传递服务器控制值”来完成(请参阅Microsoft关于此主题的帮助主题更多细节)。用于调用服务器脚本的编码将在WebForms Code后面页面中进行。

示例:在此示例中,变量取自不同的WrbForm页面元素,并作为参数添加到Image’Get’URl行。

private void sendInfo()        {            seriesType=DropDownList1.Items[DropDownList1.SelectedIndex].ToString();            viewType=CheckBox1.Checked.ToString();            Image1.ImageUrl="http://"+webServer  /*use webserver variable for server*/                +"/TeeChartForNET/ASPStream/ProcessChart.aspxeriestype="                +seriesType+"&view="+viewType;        } 

2.服务器脚本从客户端接收GET请求并运行其Page_Load事件。如果可以创建图表并且可以使用所接收的参数来定义图表的填充方式。然后将图表呈现为图像,并作为流重新提交给客户端,

private void Page_Load(object sender, System.EventArgs e)        {            tChart=new TChart();            tChart.AfterDraw += new Steema.TeeChart.TChart.PaintChartEventHandler(this.tChart_AfterDraw);            /* ...add Series and data, etc ... */            //Process Get parameters received from client            if (Request.QueryString["view"]=="False")                tChart.Aspect.View3D=false;            else                tChart.Aspect.View3D=true;            MemoryStream tempStream = new MemoryStream();            tChart.Export.Image.PNG.Save(tempStream);            Response.ContentType="Image/PNG";            Response.OutputStream.Write(tempStream.ToArray(),0,(int)tempStream.Length);            tempStream.Close();        }

添加事件

可以通过在创建图表后添加事件,为Free-scripted TeeChart ASP应用程序添加图表创建事件,例:

private void Page_Load(object sender, System.EventArgs e)        {            tChart=new TChart();            tChart.AfterDraw += new Steema.TeeChart.TChart.PaintChartEventHandler(this.tChart_AfterDraw);            /* ...add Series and data, etc ... */            MemoryStream tempStream = new MemoryStream();            tChart.Export.Image.PNG.Save(tempStream);            Response.ContentType="Image/PNG";            Response.OutputStream.Write(tempStream.ToArray(),0,(int)tempStream.Length);            tempStream.Close();        }        private void tChart_AfterDraw(object sender, Steema.TeeChart.Drawing.Graphics3D g)        {            string tmpStr="Copyright My Organisation "+DateTime.Now.ToString();            g.TextOut(g.Chart.Width-(int)g.TextWidth(tmpStr)-5,g.Chart.Height-(int)g.TextHeight("H")-3,tmpStr);        } 

AfterDraw事件代码将在图表创建时执行,在这种情况下,当图表呈现为图像时,相关消息将包含在图表画布中。如果您希望在客户端页面图表上使用基于用户鼠标点击的交互式事件,我们建议您在WebForm上使用WebChart组件。

安全问题

通过安装程序安装的默认TeeChart for .NET会创建足以访问TeeChart附带的ASP.NET示例的文件夹和IIS虚拟文件夹。WebForm应用程序假定在IIS中激活会话支持以移动临时图表信息。可以在Visual Studio.NET中修改示例项目,以使用“文件”作为临时存储图表的媒介。在Windows 2000中令人满意的测试中。在Windows 2003中,默认安装的其他安全限制限制了使用默认“_chart_temp”文件夹的可能性(临时文件夹的名称和位置是可配置的)。在Win2003服务器中,系统管理员必须修改安全权限,以允许相关ASP.NET应用程序将临时文件保存到磁盘。

WebChart工具

WebChart工具可用于从“编辑器工具”选项板添加到WebChart。许多非WebChart特定工具可以与WebCharts一起使用,除了那些响应鼠标移动的工具(除了下面介绍的WebChart工具之外)。下面描述的所有工具技术都包含在TeeChart WebChart演示的实例中。

HotspotTool

以最简单的形式,此工具激活数据点鼠标悬停标签,当鼠标在点上传递时显示。Hotspot工具也适用于Winform Charts,但WebChart的操作性质因此处所述而异。WebChart Hotspot Tool生成与每个数据点关联的mapregion。可以从以下选项中选择地图操作:

  • Mark  – 根据所选样式选项显示点标记。
  • URL – 单击数据点时连接到URL 
  • Script – 单击数据点时运行自定义Javascript 
Mark

使用“Style”属性定义“标记样式”。 例如。(通过代码)

Steema.TeeChart.Tools.SeriesHotspot hotspotTool =          ((Steema.TeeChart.Tools.SeriesHotspot)WebChart1.Chart.Tools[0]);          hotspotTool.MapAction = Steema.TeeChart.Styles.MapAction.Mark;hotspotTool.Style = Steema.TeeChart.Styles.MarksStyles.LabelPercentTotal;
URL

使用GetHTMLMap事件设置从数据点调用的URL。可以通过编辑器设置URL选项,但您必须对事件进行编码以设置正确的URL。 例如。

//init code....Steema.TeeChart.Tools.SeriesHotspot hotspotTool =          ((Steema.TeeChart.Tools.SeriesHotspot)WebChart1.Chart.Tools[0]);hotspotTool.GetHTMLMap += new Steema.TeeChart.Tools.SeriesHotspotEventHandler(hotspotTool_GetHTMLMap);//event code:private void hotspotTool_GetHTMLMap(Steema.TeeChart.Tools.SeriesHotspot sender, Steema.TeeChart.Tools.SeriesHotspotEventArgs e){     if (CheckBox1.Checked)  //open new window       e.PointPolygon.Attributes="target='_blank'";     else        e.PointPolygon.Attributes="target='_self'";        tab     if (e.Series==WebChart1.Chart.Series[0]) e.PointPolygon.HREF="http://" + TextBox1.Text; //set URL according to textbox text + TextBox1.Text; //set URL according to textbox text     if (e.Series==WebChart1.Chart.Series[1]) e.PointPolygon.HREF="http://" + TextBox2.Text;     if (e.Series==WebChart1.Chart.Series[2]) e.PointPolygon.HREF="http://" + TextBox3.Text; + TextBox3.Text;     if (e.Series==WebChart1.Chart.Series[3]) e.PointPolygon.HREF="http://" + TextBox4.Text;}
Script

脚本选项可用于处理您可能希望通过Javascript添加到图表中的任何自定义内容或增值。选择脚本作为选项时,TeeChart会添加使用帮助程序脚本的选项,当前可用:“注释”(请参阅Steema.TeeChart.Tools.HotspotHelperScripts)。您可以选择不使用Helperscript并定义自己的输出。 注释示例:

protected void Page_Load(object sender, System.EventArgs e){  //initialization  Chart ch1 = WebChart1.Chart;  Steema.TeeChart.Themes.ColorPalettes.ApplyPalette(ch1, 9);  Steema.TeeChart.Tools.SeriesHotspot hotspot1 = new Steema.TeeChart.Tools.SeriesHotspot();  ch1.Legend.Visible = false;  ch1.Tools.Add(hotspot1);  hotspot1.MapAction = Steema.TeeChart.Styles.MapAction.Script;  hotspot1.GetHTMLMap += new Steema.TeeChart.Tools.SeriesHotspotEventHandler(hotspot1_GetHTMLMap);  //....etc... more init code}private void hotspot1_GetHTMLMap(Steema.TeeChart.Tools.SeriesHotspot sender, Steema.TeeChart.Tools.SeriesHotspotEventArgs e){     //This example calls a Bar Series but e.Series and e.PointPolygon.ValueIndex could be sent     //as arguments for a drilldown query.     //The prepared HelperScriptAnnotation text accepts your text as a variable for the Annotation     //In the following case it calls an aspx script to generate and return a Chart as an image     e.PointPolygon.Attributes=String.Format(Texts.HelperScriptAnnotation,                            "<IMG SRC=ShowSeries.aspxeriestype=Bar&view=False&width=100&height=80>");     //The annotation could, alternatively, present text in the mouseover hint, eg.:     //e.PointPolygon.Attributes=String.Format(Steema.TeeChart.Texts.HelperScriptAnnotation,"hello world.");} 

上例中使用的HelperScriptAnnotation是: HelperScriptAnnotation =“onmouseover = ”ShowAnnotation('{0}’); “onmouseout = ”ShowAnnotation(”); “”; 如果您要添加自己的输出,则可以将调用替换为您自己的代码。 例如。

string myProcess = ="onmouseover="ShowAssociatedDataTable('{0}');"" onmouseout=""ShowAssociatedDataTable('');"""";e.PointPolygon.Attributes=String.Format(myProcess

来源:慧都

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2018年11月4日
下一篇 2018年11月4日

相关推荐

发表回复

登录后才能评论