2012-05-18 38 views
6

Sử dụng HighCharts 2.2.3 trong trang ASP.NET. Xem http://jsfiddle.net/wergeld/TDLvc/ để biết ví dụ về mã. Thiết lập trang web của tôi hơi khác so với những gì jsFiddle hiển thị. Chức năng của tôi để thay đổi chuỗi tồn tại trong một tệp JS được bao gồm và lệnh gọi hàm không phải là "nội tuyến" với mã tạo biểu đồ JS (mặc dù nó vẫn được bao bọc trong một tài liệu sẵn sàng jquery).HighCharts Tự động thay đổi Loại biểu đồ

Tôi có hai vấn đề và một trong số đó có thể thấy trong jsFiddle. 1) Khi thay đổi loại biểu đồ, có vẻ như ký hiệu yAxis bị mất. Bạn có thể thấy tôi có 2 yAxis ban đầu và sau khi bạn thay đổi loại biểu đồ, trục trên không còn có nhãn giá trị (nghĩa là dữ liệu biểu đồ chỉ sử dụng trục dưới cùng (dấu đầu tiên)). 2) Khi chạy này dưới FF hoặc IE Tôi nhận được một lỗi trên dòng mà các cuộc gọi:

data: serie.options.data 

Lỗi này là: c không phải là một constructor Dòng 55 trong highcharts.js (đây là phút tập tin).

Sử dụng highcharts.src.js bây giờ tôi có thể thấy rằng lỗi này là: typeClass không phải là một constructor

Đây là trên dòng 8789 trong src.js: serie = new typeClass();

Xem cập nhật jsFiddle: chọn Điểm làm loại biểu đồ: http://jsfiddle.net/wergeld/nS4Ny/1/. Điều này sẽ ném lỗi đó.

Trả lời

7

Vấn đề này là viết hoa của các giá trị thả xuống của chúng tôi. Đã thay đổi séc để làm:

newType = newType.toLowerCase(); 

Thay đổi loại biểu đồ tuyệt vời có hiệu lực. Toàn bộ mã:

function changeType(chart, series, newType) { 
     newType = newType.toLowerCase(); 
     for (var i = 0; i < series.length; i++) { 
      series = series[0]; 
      try { 
       series.chart.addSeries({ 
        type: newType, 
        stack: series.stack, 
        yaxis: series.yaxis, 
        name: series.name, 
        color: series.color, 
        data: series.options.data 
       }, 
       false); 
       series.remove(); 
      } catch (e) { 
       alert(newType & ': ' & e); 
      } 
     } 
    } 
+1

nó sẽ là tốt nếu bạn đã chia sẻ fiddle cập nhật. là một lựa chọn cho biểu đồ hình tròn có thể. – Rinzler

+0

Biểu đồ hình tròn có thể có được - không phải là mối quan tâm đối với chúng tôi vì chúng tôi không bao giờ sử dụng biểu đồ hình tròn. Một câu hỏi cập nhật là không cần thiết - khi tôi trả lời câu hỏi của riêng tôi và đưa ra mã cố định trong câu trả lời của tôi. – wergeld

+0

ya mà tốt nhưng nó sẽ có ích nếu tôi có thể chuyển đổi giữa biểu đồ pie và cột với một số sự kiện ,, – Rinzler

0

Đối với bất kỳ ai tình cờ gặp phải điều này ... Bạn phải xóa chuỗi biểu đồ 'từ trước đến trước. Ngoài ra, hãy nhớ vẽ lại chuỗi cuối cùng hoặc các thay đổi của bạn sẽ không được hiển thị :)

function changeChartType(chart, type, redraw) { 
    var seriesOptions = new Array(chart.series.length); 
    for (var i = 0; i < chart.series.length; i++) { 
     var series = chart.series[i]; 
     seriesOptions[i] = { 
      type: type, 
      name: series.name, 
      color: series.color, 
      dashStyle: series.options.dashStyle, 
      lineWidth: series.options.lineWidth, 
      marker: series.options.marker, 
      dataLabels: series.options.dataLabels, 
      enableMouseTracking: series.options.enableMouseTracking, 
      data: series.options.data, 
      isRegressionLine: series.options.isRegressionLine 
     }; 
    } 
    for (var i = chart.series.length - 1; i >= 0; i--) { 
     chart.series[i].destroy(); 
    } 
    for (var i = 0; i < seriesOptions.length; i++) { 
     var newSeries = chart.addSeries(seriesOptions[i], redraw && i == seriesOptions.length - 1); 
    } 
    chart.currentType = type; 
} 
Các vấn đề liên quan