HighCharts 도표 컨트롤 이 ASP.NET WebForm 에서 의 사용 요약(전체)

ASP.NET 개발 에 종사 한 적 이 있 으 면 일부 도표 컨트롤 을 접 할 수 있 습 니 다.예 를 들 어 OWC,ZendGraph 등 이 있 습 니 다.이런 컨트롤 들 은 모두 하나의 특징 이 있 습 니 다.그것 은 바로 우리 가.NET 의 대상 처럼 그들의 일부 속성 을 제어 할 수 있 고 로 컬 개발 이 잘 되 어 서버 에 업로드 되 어 실 행 될 때 권한 문제 가 발생 하여 정상적으로 작 동 하지 못 할 수 있 습 니 다.이 주 공 은 자바 스 크 립 트 의 도표 컨트롤 을 설명 합 니 다.이 자바 스 크 립 트 도표 컨트롤 을 얕 보지 마 세 요.여러 가지 흔히 볼 수 있 는 도 표를 만 들 수 있 습 니 다.
Highcarts 는 순수한 JavaScript 로 작 성 된 도표 라 이브 러 리 로 웹 사이트 나 웹 응용 프로그램 에 상호작용 이 있 는 도 표를 간편 하 게 추가 할 수 있 으 며 개인 학습,개인 사이트 와 비 상업 적 용도 로 무료 로 사용 할 수 있 습 니 다.현재 하 이 차 트 가 지원 하 는 도표 유형 은 곡선 도,구역 도,기둥 모양 도,떡 모양 도,산 상 점도 와 종합 도표 가 있다.
  HighCharts 사용 원 리 는 다음 그림 과 같다.
 
일반 개발 모드 는 Jquery 와 HighChartsJS 라 이브 러 리 파일 을 전단 에 적용 한 다음머리 에 Js 스 크 립 트 를 쓰 는 것 입 니 다.예 를 들 어 떡 그림 Jquery 스 크 립 트 를 그 리 는 것 은 다음 과 같 습 니 다.
 떡 그림 Jquery 스 크 립 트 그리 기

$(function () {
  $('#container').highcharts({
   chart: {
    plotBackgroundColor: null,
    plotBorderWidth: null,
    plotShadow: false
   },
   title: {
    text: 'Browser market shares at a specific website, 2010'
   },
   tooltip: {
    pointFormat: '{series.name}: <b>{point.percentage}%</b>',
    percentageDecimals: 1
   },
   plotOptions: {
    pie: {
     allowPointSelect: true,
     cursor: 'pointer',
     dataLabels: {
      enabled: true,
      color: '#000000',
      connectorColor: '#000000',
      formatter: function() {
       return '<b>'+ this.point.name +'</b>: '+ this.percentage +' %';
      }
     }
    }
   },
   series: [{
    type: 'pie',
    name: 'Browser share',
    data: [
     ['Firefox', 45.0],
     ['IE',  26.8],
     {
      name: 'Chrome',
      y: 12.8,
      sliced: true,
      selected: true
     },
     ['Safari', 8.5],
     ['Opera',  6.2],
     ['Others', 0.7]
    ]
   }]
  });
 });
그 중에서 data 속성 은 도표 로 데이터 원본 을 연결 합 니 다.그러나 이런 방식 에 도 뚜렷 한 문제 가 존재 한다.
전단 코드 양 이 너무 많 습 니 다.
동적 데 이 터 를 연결 하 는 것 이 어렵 습 니 다.취 할 수 있 는 방법 은$AJAX 비동기 방법 으로 웹 서비스 나 일반 처리 프로그램 ashx 를 분석 한 다음 에 결 과 를 되 돌려 주 는 JSON 직렬 화 처리 하 는 것 입 니 다.귀 찮 고 오류 가 발생 하기 쉽 습 니 다.
HighCharts 의 Js 호출 코드 는 코드 재 활용 이 불가능 합 니 다.
  해결 방안 은 제3자 HighCharts 구성 요소 DoNet.HighCharts 를 사용 하 는 것 입 니 다.이 구성 요 소 는 서버 에서 HighCharts Js 스 크 립 트 를 생 성 하 는 오픈 소스 구성 요소 입 니 다.그리고 출력 흐름 을 통 해 페이지 Body 블록의 DIV 에 삽입 합 니 다.원 리 는 다음 그림 과 같 습 니 다.
 
DoNet.HighCharts 개발 환경 은(둘 중 하나)
VS2008+ASP.NET MVC3+.NET 3.5
VS2010+.NET 4.0
  DoNet.HighCharts 오픈 소스 프로젝트 는 ASP.NET MVC 3 Project 형식 으로 배 포 됩 니 다.개발 자 는 컨트롤 러 폴 더 Controllers 의 DemoController 에 있 는 모든 도표 의 배경 코드(프런트 HighCharts JS 코드 와 기본적으로 일치 함)를 참고 할 수 있 습 니 다.
 
  MVC 원 리 는 프로그래머 가 이 코드 를 읽 을 수 있 도록 간단하게 설명 한다.
M:Module 모형 층
V:보기 층
C:컨트롤 제어 층
  클 라 이언 트 가 Action 동작 을 보 낼 때 동작 명 에 따라 control 컨트롤 러 에 해당 하 는 방법 명 을 찾 습 니 다.예 를 들 어http://localhost/Charts/Demo/BasicLineMVC 프레임 워 크 는 전역 경로 설정 에 따라 Basic Line 컨트롤 러 방법 에 자동 으로 매 핑 됩 니 다.컨트롤 러 방법 은 Result 를 되 돌려 주 고 Views 폴 더 의 같은 이름 의 보기 Basic Line.cshtml(cshtml 는 WebForm 의 aspx 로 이해 할 수 있 습 니 다)로 탐색 한 다음 보 기 를 불 러 옵 니 다.
  Asp.net 뮤 직 비디오 c 와 Asp.net Web Form 방식 이 다 르 기 때문에 상기 MVC 실현 방식 은 수정 해 야 WebForm 에서 사용 할 수 있 습 니 다.다음은'각종 제품 의 평균 가격 통계 기능'막대 그래프(NorthWind 데이터베이스 와 관련 된 Products 와 Categories 표)를 예 로 들 어 WebForm 에서 DoNet.HighCharts 를 어떻게 사용 하 는 지 설명 한다.
1:   조회 보기 만 들 기 ViewCategoryAvgPrice
 
2:   강 한 이름 데이터 세트 만 들 기 NorthWind.xsd
 
  데이터 세트 는 강 한 이름 데이터 세트 와 약 한 이름 데이터 세트(DataSet)두 가지 로 나 뉘 는데 구체 적 인 원 리 는 설명 하지 않 습 니 다.드래그 앤 드 롭 뷰Category Avg Price 와 Categories 표 에서 데이터 집중.
3:   기둥 그림 컨트롤 러 방법(ColumnWithDrilldown)이 aspx 페이지 의 주요 코드 구현
 기둥 그림 컨트롤 러 방법(ColumnWithDrilldown)이 aspx 페이지 의 주요 코드 구현

//  DoNet.HighCharts 
using DotNet.Highcharts;
using DotNet.Highcharts.Options;
using DotNet.Highcharts.Enums;
using DotNet.Highcharts.Helpers;
using System.Drawing;
using NorthWindTableAdapters;
/// <summary>
///          
/// </summary>
public class CategoryPrice
{
 public Decimal Price { set; get; }
 public string CategoryName { set; get; }
}
public partial class ColumnWithDrilldown : System.Web.UI.Page
{
 #region                    
private NorthWind.View_CategoryAvgPriceDataTable avgPriceDt;
avgPriceDt= new NorthWind.View_CategoryAvgPriceDataTable();
 private NorthWind.CategoriesDataTable categoryDt = new NorthWind.CategoriesDataTable();
 private View_CategoryAvgPriceTableAdapter avgPriceAdapter = new View_CategoryAvgPriceTableAdapter();
 private CategoriesTableAdapter categoryAdapter = new CategoriesTableAdapter();
 #endregion
 private List<CategoryPrice> avgPriceList=null;//       
 protected void Page_Load(object sender, EventArgs e)
 {
  LoadColumnWithDrilldown();
 }
 public void LoadColumnWithDrilldown()
 {
  avgPriceAdapter.Fill(avgPriceDt);
  categoryAdapter.Fill(categoryDt);
  //         Linq   
   avgPriceList =
    (
     from p in avgPriceDt
     group p by p.CategoryID into g//        
     select new CategoryPrice
     {
      //    
      CategoryName=categoryDt.First(c=>c.CategoryID==g.Key).CategoryName,
      //      
      Price = g.Average(c => c.UnitPrice)
     }
    ).ToList();
  //            
  string[] categories = new string[avgPriceList.Count()];
  int index = 0;
  foreach (var item in avgPriceList)
  {
   categories[index++] = item.CategoryName;
  }
  Data data = LoadDate();//           
  //  HighCharts    , mvc  
  div1.InnerHtml = chart.ToHtmlString();//   HighCharts         div1 
}
 //                     
 private Data LoadDate()
 {
   Data data = null;
   int index =-1;
   //            
   DotNet.Highcharts.Options.Point []pointList=new DotNet.Highcharts.Options.Point[avgPriceList.Count];
   foreach (var item in avgPriceList)
   {
    pointList[++index] = new DotNet.Highcharts.Options.Point
    {
     Y = (Number)(item.Price*100)/100.0,
     Color = Color.FromName(string.Format("colors[{0}]", index))
    };
   }
   data = new Data(pointList);
   return data;
 }
}
다음 그림 과 같이 효과 보이 기:
 
이상 이 바로 본문의 모든 서술 이 니 여러분 에 게 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기