Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.90/29: Рейтинг темы: голосов - 29, средняя оценка - 4.90
6 / 6 / 1
Регистрация: 13.12.2015
Сообщений: 398

Нарисовать Chart по данным datagriedview

12.07.2018, 10:38. Показов 5544. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, всем.
Подскажите пожалуйста в чем ошибка:
В datagriedview выводится три столбца: Столбец0, Столбец1, Столбец2
SQL
1
2
3
4
5
6
7
8
9
10
Столбец0 Столбец  Столбец2
20180101    Номер1 2
20180101    Номер2 21
20180101    Номер3 21
20180201    Номер1 54
20180201    Номер2 5
20180201    Номер3 21
20180301    Номер1 45
20180301    Номер2 54
20180301    Номер3 45
По данным из таблицы нужно сделать график (во вложении).
Строю Chart, но он пустой. Хотя datagriedview данные меняются.
C#
1
2
3
4
5
6
7
8
////--////
  SqlDataAdapter da = new SqlDataAdapter(comm);
  DataSet ds = new DataSet();
  da.Fill(ds);
  dataGridView2.DataSource = ds.Tables[0];
  chart1.Series["Series1"].XValueMember = (ds.Tables[0].Columns[0]).ToString();
  chart1.Series["Series1"].YValueMembers = (ds.Tables[0].Columns[1]).ToString();
  chart1.DataBind();
Миниатюры
Нарисовать Chart по данным datagriedview  
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.07.2018, 10:38
Ответы с готовыми решениями:

Нарисовать график в Chart по данным из Stringgrid
подскажите ,пожалуйста, как можно сделать график из таблицы стрингрида (чтобы по оси x были названия каждого столбца (то есть страны) по...

График chart по данным excel
Как связать chart и excel в с# чтобы по выбору столбцов строился график? берется максимальное количество столбцов в excel до BT....

Рисование графика в Chart по данным из DataGridView
Перелазил весь инет но так и не нашёл ответа. Есть datagridview и chart. Пользователь вводит данные в DataGridView и при нажатии на кнопку...

10
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
12.07.2018, 11:22
C#
1
2
chart1.Series["Series1"].XValueMember = ds.Tables[0].Columns[0].ColumnName;
chart1.Series["Series1"].YValueMembers = ds.Tables[0].Columns[1].ColumnName;
1
 Аватар для Shogun31337
557 / 534 / 225
Регистрация: 02.11.2016
Сообщений: 1,538
12.07.2018, 11:22
studentrm, как сделать c DataSource не подскажу, но можно так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
chart1.Series[0].Name = "20180101";
var rows = dt.Rows.Cast<DataRow>().Where(r => (int)r[0] == 20180101);
foreach (DataRow row in rows)
{
    chart1.Series[0].Points.AddXY(row[1], row[2]);
}
 
chart1.Series.Add("20180201");
rows = dt.Rows.Cast<DataRow>().Where(r => (int)r[0] == 20180201);
foreach (DataRow row in rows)
{
    chart1.Series[1].Points.AddXY(row[1], row[2]);
}
 
chart1.Series.Add("20180301");
rows = dt.Rows.Cast<DataRow>().Where(r => (int)r[0] == 20180201);
foreach (DataRow row in rows)
{
    chart1.Series[2].Points.AddXY(row[1], row[2]);
}
Результат:
1
6 / 6 / 1
Регистрация: 13.12.2015
Сообщений: 398
12.07.2018, 11:24  [ТС]
Shogun31337, а если datagriedview будет содержать не три дата, а несколько.
т.е. динамически может изменяться
(int)r[0] == 20180101
0
 Аватар для Shogun31337
557 / 534 / 225
Регистрация: 02.11.2016
Сообщений: 1,538
12.07.2018, 12:18
Лучший ответ Сообщение было отмечено studentrm как решение

Решение

Цитата Сообщение от studentrm Посмотреть сообщение
т.е. динамически может изменяться
Ну с такой структурой таблицы нужно использовать функцию группировки по первому столбцу, чтобы узнать сколько всего значений и какие они. А потом уже использовать полученный массив.

Добавлено через 22 минуты
Примерно так будет, если количество неизвестно:
C#
1
2
3
4
5
6
7
8
9
10
11
            var series = dt.Rows.Cast<DataRow>().GroupBy(r => r[0]).Select(g => g.Key).ToArray();
 
            foreach(var s in series)
            {
                chart1.Series.Add(s.ToString());
                var rows = dt.Rows.Cast<DataRow>().Where(r => (int)r[0] == (int)s);
                foreach (DataRow row in rows)
                {
                    chart1.Series[s.ToString()].Points.AddXY(row[1], row[2]);
                }
            }
Добавлено через 23 минуты
PS. Можно еще проще сделать. Все, оказывается, делается в одну строку:
C#
1
chart1.DataBindCrossTable(dt.Rows, ds.Tables[0].Columns[0].ColumnName, ds.Tables[0].Columns[1].ColumnName, ds.Tables[0].Columns[2].ColumnName, "");
Добавлено через 1 минуту
Data Binding Microsoft Chart Control
0
6 / 6 / 1
Регистрация: 13.12.2015
Сообщений: 398
12.07.2018, 14:50  [ТС]
Shogun31337, dt.Rows - dt источник подключения? Ошибка string

Добавлено через 5 минут
Shogun31337, datagriedview ошибка int
0
 Аватар для Shogun31337
557 / 534 / 225
Регистрация: 02.11.2016
Сообщений: 1,538
12.07.2018, 14:56
Цитата Сообщение от studentrm Посмотреть сообщение
dt источник подключения?
Да. В Вашем случае будет ds.Tables[0].Rows. Забыл исправить...

Цитата Сообщение от studentrm Посмотреть сообщение
datagriedview ошибка int
очень исчерпывающая информация... где ошибка? когда возникает? что при этом написано?
0
6 / 6 / 1
Регистрация: 13.12.2015
Сообщений: 398
12.07.2018, 15:00  [ТС]
Shogun31337,
ошибка на данной строке
C#
1
chart1.DataBindCrossTable(dataGridView1.Rows, ds.Tables[0].Columns[0].ColumnName, ds.Tables[0].Columns[1].ColumnName, ds.Tables[0].Columns[2].ColumnName, "");
Ошибка появляется, после того как datagriedview наполнен и след этап постройка диаграммы
C#
1
2
3
4
5
An unhandled exception of type 'System.ArgumentException' occurred in System.Windows.Forms.DataVisualization.dll
 
 
 
Additional information: Точки данных ряда не поддерживают значения типа System.Windows.Forms.DataGridViewRow, допускается использование значений только следующих типов: Double, Decimal,
0
 Аватар для Shogun31337
557 / 534 / 225
Регистрация: 02.11.2016
Сообщений: 1,538
12.07.2018, 15:02
Цитата Сообщение от studentrm Посмотреть сообщение
ошибка на данной строке
Я же сказал выше:
Цитата Сообщение от Shogun31337 Посмотреть сообщение
В Вашем случае будет ds.Tables[0].Rows.
При чем тут dataGridView1?
1
6 / 6 / 1
Регистрация: 13.12.2015
Сообщений: 398
12.07.2018, 15:03  [ТС]
Shogun31337, спасибо большое
0
 Аватар для Shogun31337
557 / 534 / 225
Регистрация: 02.11.2016
Сообщений: 1,538
12.07.2018, 15:05
studentrm, на здоровье!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.07.2018, 15:05
Помогаю со студенческими работами здесь

Chart построение диаграммы по данным из 3 TEdit
Имеется 3 Edit'а. На основании введенных в них данных диаграмма должна принять свои пропорции из 3-х делений. Как работать с константами...

Chart: построение графиков по данным из таблиц
Все доброго времени суток. Ситуация такая: В таблице имеются данные по продажам, необходимо их визуально проанализироавть, т.е...

Вывод графика в Chart по данным из таблицы БД
Здравствуйте!!! Столкнулся с проблемой вывода графика по таблице(VB 2012). Выдает ошибку: Приведение строки к типу integer является...

Построение графика в Chart по данным RichEdit
Добрый день. много тем про ричэдит, пожалуй и я спрошу. есть файл с данными типа дата________время____тепм_____влаж ...

Как сформировать диаграмму(Chart) по выбранным данным из DataGrid ?
Всем привет! Ребят очень нужна помощь! Как сформировать диаграмму(Chart) по выбранным данным (т.е. через CheckBox) данным из DataGrid ?...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru