2010-04-21 3 views
6

데이터 테이블에서 만들고 싶은 차트 컨트롤이 있습니다.ASP.NET 차트 컨트롤 -이 막대 차트는 어떻게 만듭니 까?

테이블은 다음과 같습니다

alt text http://www.freeimagehosting.net/uploads/5d02ce1558.png

내가 같이 표시됩니다 원하는 차트 :

''' 
'''' 
'''''  '' ' 
'''''  '' ' 
ECCTMP  ECCTMP  ECCTMP 
Monday  Tuesday  Wednesday 

희망이 (이메일 유형에 따라 그룹화 매일 자신에 대한 의미가 있습니다, 호출).

나는 이제 데이터 바인딩하는 방법을 알고 있습니까? 빌리

+0

데이터 테이블의 백엔드 구조에 대해 자세히 설명해 주시겠습니까? –

답변

5

당신은 당신이 Chart.DataBindTable 방법 (MSDN)를 사용해야합니다 막대 차트에서 그룹 시리즈를 찾고 있다면.

DataTable table = new DataTable(); 
table.Columns.Add("Day", typeof(string)); 
table.Columns.Add("Email", typeof(int)); 
table.Columns.Add("Calls", typeof(int)); 
table.Columns.Add("Contacts", typeof(int)); 
table.Columns.Add("Tasks", typeof(int)); 
table.Columns.Add("Meetings", typeof(int)); 
table.Columns.Add("Proposals", typeof(int)); 

table.Rows.Add("Monday", 1, 3, 3, 4, 5, 5); 
table.Rows.Add("Tuesday", 1,6,8,2,0,3); 
table.Rows.Add("Wednesday", 7, 6,3,0,2,1); 
table.Rows.Add("Thursday", 1,5,5,9,3,1); 
table.Rows.Add("Friday", 4,7,3,5,2,3); 

//convert datatable to a IEnumerable form 
var IEtable = (table as System.ComponentModel.IListSource).GetList(); 

//Bind the datatable to the chart using the DataBindTable method 
Chart1.DataBindTable(IEtable, "Day"); 
: 다음 테스트로 사용하는 몇 가지 더미 코드의 alt text

:

Chart1.DataBindTable(IEtable, "Day"); 

이 다음과 같이 보입니다 차트를 생성합니다 :

그냥 다음 코드를 추가합니다

ECCTMP에서 설명한대로 레이블을 표시 할 수도 있지만 범례를 추가하면 더 깨끗해질 수 있습니다.

+0

이 코드는 훌륭하게 보입니다. 시도하기를 기다릴 수 없습니다. 내가 어떻게 일어나는지 알려줄거야! – iamjonesy

+1

다행히 듣고있어 기쁩니다. 질문에 쓴 레이블을 "ECCTMP Monday"로 표시되도록 변경하는 것도 가능하지만 Legend가 잘 작동한다고 가정했습니다. –

+0

@Alison, 오른쪽의 세로 막 대형 차트입니다. 막 대형 차트에서 동일하게하려면 어떻게해야합니까? 동일한 코드를 시도했지만 오류가 발생합니다 "차트 영역 축 - 차트 영역에 호환되지 않는 차트 형식이 들어 있습니다 (예 : 막대 차트와 세로 막 대형 차트가 같은 차트 영역에 존재할 수 없음)." 마크에서 누락 된 것이 있다고 생각합니다. – Rishi

0
protected void Page_Load(object sender, EventArgs e) 
    { 

     Title tl = new Title("Players Score Card"); 
     tl.Font = new System.Drawing.Font("vardana",12); 
     //chrtGroup.Titles.Add(tl); 
     //ChartArea a = new ChartArea("players"); 
     //a.AxisX.Title = "Player's Yearwise"; 
     //a.AxisY.Title = "Scores"; 
     //chrtGroup.ChartAreas.Add(a); 


     DataTable dt = new DataTable(); 
     dt.Columns.Add("Years", typeof(int)); 
     dt.Columns.Add("Afridi", typeof(int)); 
     dt.Columns.Add("Akmal", typeof(int)); 
     dt.Columns.Add("Nasir", typeof(int)); 
     dt.Columns.Add("Shoib",typeof(int)); 
     dt.Columns.Add("Hafiz", typeof(int)); 


     Random rn = new Random(); 
     for (int i = 1; i < 10; i++) 
     { 
      DataRow dr = dt.NewRow(); 
      dr["Years"] = "200" +i; 
      dr["Afridi"] = 700 + rn.Next(200,800); 
      dr["Akmal"] = 500 + rn.Next(200,800); 
      dr["Nasir"] = 400 + rn.Next(200,800); 
      dr["Shoib"] = 800 + rn.Next(300,500); 
      dr["Hafiz"] = 200 + rn.Next(200, 900); 
      dt.Rows.Add(dr); 
     } 

     Series afridi = new Series("Afridi"); 
     Series akmal = new Series("Akmal"); 
     Series nasir = new Series("Nasir"); 
     Series shoib = new Series("Shoib"); 
     Series hafiz = new Series("Hafiz"); 

     afridi.IsValueShownAsLabel = true; 
     akmal.IsValueShownAsLabel = true; 
     nasir.IsValueShownAsLabel = true; 
     shoib.IsValueShownAsLabel = true; 
     hafiz.IsValueShownAsLabel = true; 

     foreach (DataRow r in dt.Rows) 
     { 
      afridi.Points.AddXY(Convert.ToDouble(r["Years"]),Convert.ToDouble(r["Afridi"])); 
      akmal.Points.AddXY(Convert.ToDouble(r["Years"]), Convert.ToDouble(r["Akmal"])); 
      nasir.Points.AddXY(Convert.ToDouble(r["Years"]),Convert.ToDouble(r["Nasir"])); 
      shoib.Points.AddXY(Convert.ToDouble(r["Years"]), Convert.ToDouble(r["Shoib"])); 
      hafiz.Points.AddXY(Convert.ToDouble(r["Years"]), Convert.ToDouble(r["Hafiz"])); 
     } 

     chrtGroup.Series.Add(afridi); 
     chrtGroup.Series.Add(akmal); 
     chrtGroup.Series.Add(nasir); 
     chrtGroup.Series.Add(shoib); 
     chrtGroup.Series.Add(hafiz); 

     chrtGroup.Legends.Add(new Legend("Afridi")); 
     chrtGroup.Legends.Add(new Legend("Akmal")); 
     chrtGroup.Legends.Add(new Legend("Nasir")); 
     chrtGroup.Legends.Add(new Legend("Shoib")); 
     chrtGroup.Legends.Add(new Legend("Hafiz")); 
    } 
} 
관련 문제