找回密码
 立即注册

QQ登录

只需一步,快速开始

SnailRun

高级会员

56

主题

182

帖子

1144

积分

高级会员

积分
1144

活字格认证微信认证勋章

SnailRun
高级会员   /  发表于:2015-5-8 14:53  /   查看:5663  /  回复:6
web页面中的chart图表可以添加(如柱形图)每个柱子的onclick事件?

评分

参与人数 1金币 +300 收起 理由
iceman + 300 提供有价值产品需求

查看全部评分

6 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2015-5-8 17:00:00
沙发
回复 1楼SnailRun的帖子

目前 Spread 图表还无法支持这个功能,我们的另一款控件 C1 for ASP.NET 中的 Chart 支持这个功能,在线示例:
http://demo.gcpowertools.com.cn/ ... hart/DrillDown.aspx

关于 Spread 这个图表点击问题我会作为新需求通知产品组,评估看能否在下一个版本中添加。
回复 使用道具 举报
SnailRun
高级会员   /  发表于:2015-5-8 17:16:00
板凳
但是 C1 for ASP.NET不能加载excel模板啊,而且无法导出excel吧
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2015-5-11 09:44:00
地板
回复 3楼SnailRun的帖子

确实如此,C1 Chart 是一个独立的图表控件,无法进行和 Excel 文件的交互。

Spread 图表点击问题我已经添加到功能列表中,如果有进展我会及时通知你。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2015-5-11 14:49:00
5#
回复 3楼SnailRun的帖子

经过进一步调查, Spread Chart 提供了相应的接口响应客户端点击事件,测试代码如下:


  1. protected void Page_Load(object sender, EventArgs e)
  2.         {
  3.             this.FpSpread1.ActiveSheetView.Charts[0].EnableClickEvent = true;
  4.             this.FpSpread1.ActiveSheetView.Charts[0].Click += _Default_Click;
  5.         }

  6.         void _Default_Click(object sender, ImageClickEventArgs e)
  7.         {
  8.           HitTest position=  this.FpSpread1.ActiveSheetView.Charts[0].HitTest(e.X, e.Y);
  9.           ((FarPoint.Web.Chart.SeriesHitTest)(position)).PointIndex;//The index of chart bar.
  10.         }
复制代码
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2015-5-15 09:17:00
6#
回复 3楼SnailRun的帖子

在 IE11、Chrome(Version 42.0.2311.135 m)、FireFox (33.1.1)中分别作了测试,可以正常调用 Chart Click 事件,测试代码如下:

  1.         protected void Page_Load(object sender, EventArgs e)
  2.         {
  3.             if (this.FpSpread1.ActiveSheetView.Charts.Count > 0)
  4.                 this.FpSpread1.ActiveSheetView.Charts[0].Click += WebForm1_Click;

  5.             if (IsPostBack)
  6.             {
  7.                 return;

  8.             }
  9.             BarSeries series = new BarSeries();
  10.             series.SeriesName = "Series 0";
  11.             series.Values.Add(2.0);
  12.             series.Values.Add(4.0);
  13.             series.Values.Add(3.0);
  14.             series.Values.Add(5.0);
  15.             YPlotArea plotArea = new YPlotArea();
  16.             plotArea.Location = new PointF(0.2f, 0.2f);
  17.             plotArea.Size = new SizeF(0.6f, 0.6f);
  18.             plotArea.Series.Add(series);
  19.             LabelArea label = new LabelArea();
  20.             label.Text = "Bar Chart";
  21.             label.Location = new PointF(0.5f, 0.02f);
  22.             label.AlignmentX = 0.5f;
  23.             label.AlignmentY = 0.0f;
  24.             LegendArea legend = new LegendArea();
  25.             legend.Location = new PointF(0.98f, 0.5f);
  26.             legend.AlignmentX = 1.0f;
  27.             legend.AlignmentY = 0.5f;
  28.             ChartModel model = new ChartModel();
  29.             model.LabelAreas.Add(label);
  30.             model.LegendAreas.Add(legend);
  31.             model.PlotAreas.Add(plotArea);
  32.             FarPoint.Web.Spread.Chart.SpreadChart chart = new FarPoint.Web.Spread.Chart.SpreadChart();
  33.             chart.Model = model;
  34.             FpSpread1.Sheets[0].Charts.Add(chart);
  35.             this.FpSpread1.ActiveSheetView.Charts[0].EnableClickEvent = true;
  36.            
  37.         }

  38.         void WebForm1_Click(object sender, ImageClickEventArgs e)
  39.         {
  40.             HitTest position = this.FpSpread1.ActiveSheetView.Charts[0].HitTest(e.X, e.Y);

  41.             int pointIndex = ((FarPoint.Web.Chart.SeriesHitTest)(position)).PointIndex;//The index of chart bar.
  42.         }
复制代码


测试版本为 Spread 8.1。注意需要在每次页面加载时重新注册Click时间,详细请参考代码。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2015-5-26 09:25:00
7#
回复 3楼SnailRun的帖子

请问问题是否解决?如果没有请继续跟帖。
为了给你提供更优质的服务,请对本次服务进行评分。我们会认真对待你提出的宝贵意见,谢谢   
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部