彩票走势图

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

翻译|使用教程|编辑:王香|2018-12-07 09:55:51.000|阅读 289 次

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

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

相关链接:

下载TeeChart Pro ActiveX最新版本

免费脚本化的ASP应用程序

在WebForm中使用WebChart的另一种方法是在标准的asp(aspx)页面中使用TeeChart作为脚本化的“non-visible/不可见”控件。TeeChart for .NET附带了一个实例来演示这种技术。您可以在TeeChart的ASP.NET演示项目中找到它,在“Interacting with Charts\Chart 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="//"+webServer  /*use webserver variable for server*/ 
                +"/TeeChartForNET/ASPStream/ProcessChart.aspx?seriestype=" 
                +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="//" + 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="//" + TextBox2.Text; 
     if (e.Series==WebChart1.Chart.Series[2]) e.PointPolygon.HREF="//" + TextBox3.Text; + TextBox3.Text; 
     if (e.Series==WebChart1.Chart.Series[3]) e.PointPolygon.HREF="//" + 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.aspx?seriestype=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,e.PointPolygon.ValueIndex.ToString());

然后,您将使用ShowAssociatedDataTable方法来执行调用以显示关联的数据表。

ScrollTool

scrollTool将滚动条添加到WebChart的底部。您可以设置图表的可见部分大小和起始位置。尽管可以取消激活功能,但图表也可以拖动。ScrollTool可以与Hotspot Tool结合使用。 使用编辑器添加ScrollTool会自动将图表设置为2D并移动下轴以允许滚动条的空间。滚动条在设计时不可见。 将ViewSegmentSize和StartPosition与SegmentViewUnits结合使用以设置可滚动大小。 例如。

Steema.TeeChart.Tools.ScrollTool scrollTool =  
                        ((Steema.TeeChart.Tools.ScrollTool)WebChart1.Chart.Tools[0]); 
scrollTool.StartPosition = 30; 
scrollTool.SegmentViewUnits = Steema.TeeChart.Tools.ScrollToolViewUnit.percent; 
scrollTool.ViewSegmentSize = 20; 

ZoomTool

ZoomTool允许选择要处理的图表的子区域以进行缩放。可以通过图表区域上的mousedrag选择该区域,将缩放坐标返回到服务器以停止缩放区域。该区域可以通过相反方向的阻力来解除。 要使用ZoomTool,您应该将以下方法添加到页面代码中。 使用会话:

private void CheckZoom(WebChart wChart) 
{ 
     ArrayList zoomedState=(ArrayList)Session[wChart.ID+"Zoomed"]; 
     zoomedState=((Steema.TeeChart.Tools.ZoomTool)wChart.Chart.Tools[0]).SetCurrentZoom(Request, 
        zoomedState); 
     if (zoomedState==null) 
        Session.Remove(wChart.ID+"Zoomed"); 
     else 
        Session.Add(wChart.ID+"Zoomed",zoomedState); 
} 

或Page.Cache:

private void CheckZoom(WebChart wChart) 
{ 
  ArrayList zoomedState = (ArrayList)Page.Cache[wChart.ID + "Zoomed"]; 
  zoomedState = ((Steema.TeeChart.Tools.ZoomTool)wChart.Chart.Tools[0]).SetCurrentZoom(Request, 
    zoomedState); 
  if (zoomedState == null) 
    Page.Cache.Remove(wChart.ID + "Zoomed"); 
  else 
    Page.Cache.Add(wChart.ID + "Zoomed", zoomedState); 
}

在Page_Load方法的末尾调用方法,传递要缩放的图表的名称。 例如。

CheckZoom(WebChart1);

在没有任何鼠标x或y位移的图表上单击/拖动会导致单击发送回服务器,而不是缩放。如果要求使用window onload事件,请参阅Window onload事件部分。

当您的WebChart添加了缩放或滚动工具时,它需要使用Window.onload事件来初始化工具的特征。如果您需要根据自己的需要进一步使用onload事件,请在名为windowOnload的页面中添加一个新函数,并将代码放在那里。

Window onload事件

例如。可选地在页面的< HEAD>部分中

 

<script language=javascript> 
function windowOnload()  
{ 
   window.status = new Date().getTime(); 
} 
</script>

购买TeeChart Pro AciveX正版授权,请点击“”哟!


标签:图表ActiveX图表控件teechart

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.cn


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP