ASP.NET Chart-Kontrollen - wie erstelle ich dieses Balkendiagramm?
-
30-09-2019 - |
Frage
Got ein Chart-Steuerelement Ich will aus einer Datentabelle machen.
Die Tabelle sieht wie folgt aus:
alt text http://www.freeimagehosting.net/uploads/5d02ce1558.png
das Diagramm i wie folgt aussehen wollen:
'''
''''
''''' '' '
''''' '' '
ECCTMP ECCTMP ECCTMP
Monday Tuesday Wednesday
hoffen, dass dies Sinn macht für jeden Tag seine b y der Typ (E-Mail, Anrufe) gruppiert.
Ich bin gerade jetzt sicher, wie es Databind?
Billy
Lösung
Wenn Sie gruppieren Serie in einem Balkendiagramm suchen, dann müssen Sie die Chart.DataBindTable Methode (MSDN).
Fügen Sie einfach den folgenden Code:
Chart1.DataBindTable(IEtable, "Day");
Das wird ein Diagramm erzeugen, die etwa wie folgt aussieht:
Hier ist ein Dummy-Code als Test zu verwenden:
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");
Es ist auch möglich, die Etiketten zu haben scheinen, wie Sie mit ECCTMP beschreiben, sondern eine Legende hinzugefügt werden wahrscheinlich saubere aussehen.
Andere Tipps
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"));
}
}