С помощью элемента управления Chart можно легко визуализировать информацию из баз данных. Существуют два основных способа это сделать: использовать обычный ADO.NET или использовать LINQ.
В качестве примера, рассмотрим построение графика по данным из простейшей Базы данных (БД). Эта БД содержит всего одну таблицу MyTable. Её содержимое показано на рисунке ниже.
Данная БД и таблица были созданы специально для этой статьи. Поэтому, не стоит искать в них какой-либо смысл, кроме демонстрации работы с Chart. Как говорится, все совпадения случайны.
Способ с использованием ADO.NET
Для реализации подключения к БД необходимо использовать не визуальный элемент управления DataSet. После создания подключения к БД (создаётся в режиме мастера) поместим на форму не визуальный элемент управления BindingSource. Укажем в его свойстве DataSource DataSet с созданным подключением к БД, а в свойстве DataMembers таблицу с данными (MyTable).
После этого Visual Studio автоматически создаст компонент TableAdapter для получения данных из таблицы.
Теперь, когда всё подготовлено, приступим непосредственно к построению графика. Для этого сперва получим необходимые данные, затем зададим какой столбец будет осью абсцисс и ординат.
Необходимо отметить, что по умолчанию Chart уже содержит один ряд данных (имя по умолчанию Series1).
1 2 3 |
myTableTableAdapter.Fill(dbDataSet1.MyTable); chart1.Series["Series1"].XValueMember = (dbDataSet1.Tables[0].Columns[0]).ToString(); chart1.Series["Series1"].YValueMembers = (dbDataSet1.Tables[0].Columns[1]).ToString(); |
После этого, собственно, строим график.
1 |
chart1.DataBind(); |
Способ с использованием LINQ
То же самое можно сделать и с применением LINQ. В качестве примера используем туже БД, но экспортированную в MS SQL Server.
После создания классов LINQ to SQL для этой БД выполним инициализацию и напишем запрос для получения данных.
1 2 |
DataClasses1DataContext dcc = new DataClasses1DataContext(); var res = from tbl in dcc.MyTable select new { tbl.CurrentDate, tbl.Value }; |
После этого в цикле foreach заполняем ряд данных.
1 2 3 4 |
foreach (var r in res) { chart1.Series["Series1"].Points.AddXY(r.CurrentDate, r.Value); } |
Далее строим график.
1 |
chart1.DataBind(); |
Результат построения графиков первым и вторым способом одинаковый.
С помощью описанных способов можно визуализировать практически любые данные.
Спасибо.
Здравствуйте. А как сделать чтобы в графике отображалась еще дата по оси Х и еще какой то столбец. например у меня таблица доходов и расходов. вот мне нужно чтобы по оси Х отображались также столбец с доходами и столбец с датой?
Самый простой способ решить подобную задачу — по осям координат откладывать дату и сумму, а доход и расход отображать двумя рядами данных. Стандартный Chart такое вполне может. Получится, как говорится, «дёшево и сердито». Для построения нестандартных графиков (с двумя осями по X или Y и т.д.) нужно искать сторонние компоненты или писать собственные.