c# .net Adsense ADO.NET Linq Viruses/security asp.net MVC JQuery Angular-js Node-js SEO Java C++ SQL API Networking vb.net .Net Css JavaScript Generics c#.Net entity framework HTML Website host Website Construction Guide HTTP tutorial W3C tutorial Web Services JSON Psychology Ionic framework Angular ReactJS Python Computer Android
c# .net

Chart control in windows application c# .net

| | CSharp

In this article I will explain with an example how to populate a chart control from sql server database using entity framework in windows application.

Database:

Here I am using Northwind database. You can download it from following link.

Download Northwind Database

You can view the chart based on the combo box selection dynamically populated from database. In the combobox I loaded list countries where the orders have been shipped. The chart will present the information, x axis represents the cities of the countries having orders and y-axis represents the total amount of orders shiped throughout the each city.

  public partial class Form1 : Form
    {
       private models db = new models();
        public Form1()
        {
           InitializeComponent();
           LoadCountries();
           cboCountry.SelectedIndex =2;
           Displaychart(cboCountry.Text);
        }
 
        private void LoadCountries()
        {
            var countries = (from c in db.Orders
                             select new { c.ShipCountry }).Distinct().ToList();
           cboCountry.DataSource = countries;
           cboCountry.ValueMember = "shipcountry";
           cboCountry.DisplayMember = "shipcountry";
        }
 
        public void Displaychart(string country) {
 
            var result = from queryResult in db.Orders.AsEnumerable()
                         where queryResult.ShipCountry ==country
                                group queryResult by queryResult.ShipCity into rowGroup
                                select new
                                {
                                    Name =rowGroup.Key,
                                    OrdersCount= rowGroup.Count()
                                };
 
            // Set palette
            this.chartControl.Palette = ChartColorPalette.EarthTones;
            // Set title
            this.chartControl.Titles.Clear();
            this.chartControl.Titles.Add(string.Format("{0} Order Distribution", country));
            this.chartControl.Series.Clear();

            foreach (var i in result)
            {
                Series series = this.chartControl.Series.Add(i.Name);
               series.Points.Add(i.OrdersCount);
            }

        }

        private void cboCountry_SelectedIndexChanged(object sender, EventArgs e)
        {
           Displaychart(cboCountry.Text);

        }    }

Output: