【问题标题】:How to make tooltips show up when mouse hovers over data point当鼠标悬停在数据点上时如何显示工具提示
【发布时间】:2013-08-23 15:47:11
【问题描述】:

我一直在寻找某种侧重于工具提示如何工作的教程,但运气不佳。

我有一个测试项目,我在其中渲染一个包含五个数据点的折线图。当我实例化Chart 对象时,我设置了IsMapEnabled = true。当我定义系列时,我会尝试设置工具提示。

  private void DefineSeries() {
     var series = new Series();
     series.ToolTip = "#VALY";
     series.PostBackValue = "#Index";
     var x = new[] {0, 1, 2, 3, 4, 5};
     var y = new[] {0, 4, 5, 3, 7, 2};
     for ( int i = 0; i < x.Length; i++ ) {
         series.Points.Add( new DataPoint( x[ i ], y[ i ] ) );
     }
     series.ChartType = SeriesChartType.Line;
     DefineSeriesStyle( series );
     chart_.Series.Add( series );   
  }

图表按预期呈现,但当鼠标悬停在数据点上时不显示工具提示。我显然在某处遗漏了一步,但我不知道它是什么。

编辑:显示图表视图模型和后续函数调用的 Action 方法和构造函数的代码。

  public ActionResult CausedOutPoint() {
     var causedOut = new CausedOutViewModel();
     var path = Server.MapPath( "~" ) + "CausedOut.Png";
     causedOut.Chart.SaveImage( path, ChartImageFormat.Png );
     return File( path, "img/png" );
  }

  public CausedOutViewModel() {
     chart_ = new Chart {IsMapEnabled = true};
     chart_.PostPaint += chart__PostPaint;
     chart_.RenderType = RenderType.ImageMap;
     chart_.ID = "CausedOut";
     InitializeChart( chart_ );
     chart_.Width = new Unit( 1200, UnitType.Pixel );
     chart_.Height = new Unit( 800, UnitType.Pixel );
     CreateTitles();
  }

  private void InitializeChart( ) {
     DefineSeries();
     DefineChartArea();
  }

【问题讨论】:

标签: c# asp.net asp.net-mvc data-visualization mschart


【解决方案1】:

您在 DefineSeriesStyle 中执行的操作会禁用工具提示。我已经测试了没有声明 DefineSeriesStyle( series ); 的方法,并且显示了工具提示。

有关工具提示的全面概述,自定义工具提示请参阅我之前对类似问题的回答。 Show tooltip in LineSeries WinForms Chart?

【讨论】:

  • 我尝试将DefineSeriesStyle 注释掉,但还是不行。我在该方法中唯一要做的就是设置系列颜色、标记样式等。我根本不接触工具提示属性(标签或其他)。所以我认为这可能指向我如何呈现图表。我在原始帖子中编辑了更多代码,其中显示了 Action 方法、视图模型构造函数和 InitializeChart 方法。
【解决方案2】:

我的问题是我没有为我的图表渲染地图区域。对于那些遇到同样问题的人,他的代码解决了我的问题:

控制器

  public ActionResult CausedOutPoint() {
     var ms = (byte[])Session[ "MS" ];
     return File( ms, "img/png" );
  }

  public ActionResult CausedOutMap(string name)
  {

     var causedOut = new CausedOutViewModel();
     var ms = new MemoryStream();
     causedOut.Chart.SaveImage(ms, ChartImageFormat.Png);
     Session[ "MS" ] = ms.ToArray();
     return Content( causedOut.Chart.GetHtmlImageMap( name ) );
  }

Index.csthml

中的必要剃须刀
    <img  src="@Url.Action("CausedOutPoint")" usemap="#CausedOut"/>
    @{
        Html.RenderAction("CausedOutMap", new { name = "causedOut"});
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-07
    • 2014-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多