powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Представление данных в графике.
8 сообщений из 8, страница 1 из 1
Представление данных в графике.
    #38200920
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня есть DataGridView с колонками сгенерированными в процессе запроса.
Я хочу представить данные в колонках при помощи графика.
Пользуюсь System.Windows.Forms.DataVisualization.Charting.Chart.
Заполнение графика что то вроде этого:
Код: c#
1.
2.
3.
4.
5.
6.
data = new double[100];  //data from selected column
for (int i = 0; i < data.Length; i++)
{
      data[i] = i;
     chart1.Series[0].Points.AddXY(i, data[i]);
 }



Проблема что в разных колонках разные типы данных - string, int, double.
Как можно распознать тип данных наиболее оптимально?
...
Рейтинг: 0 / 0
Представление данных в графике.
    #38201108
Alex Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7,

Какая-то странная постановка вопроса...
Вы и так уже работаете с конкретными типами данных полей таблицы. Они то ведь не из эфира появляются... Вы же их описывали при создании набора данных...

Может как-то расширите свой вопрос?
...
Рейтинг: 0 / 0
Представление данных в графике.
    #38202599
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я не знаю тип данных вернувшихся в запросе, то есть я то знаю, но прога нет.
Мне нужно обратиться к системным таблицам, чтоб вытащить тип данных.
Я пробовал работать с массивом объектов.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
if (data_grid.Rows.Count > 0)
{
     data = new object[data_grid.Rows.Count];
     for (int j = 0; j < data_grid.Rows.Count; j++)   //data_grid.Rows.Count = 670000
     {
             data[j] = data_grid.Rows[j].Cells[comboBoxColumns.Text].Value; 
     }
 }



но на 670000 строк получаю эксепшен:
Exception of type 'System.OutOfMemoryException' was thrown.
...
Рейтинг: 0 / 0
Представление данных в графике.
    #38204220
Alex Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7Я не знаю тип данных вернувшихся в запросе, то есть я то знаю, но прога нет.
Мне нужно обратиться к системным таблицам, чтоб вытащить тип данных.Т.е. как это? В DataTable.Columns[i] отсутствует информация о типе поля?
А как же : http://msdn.microsoft.com/ru-ru/library/system.data.datacolumn(v=vs.100).aspx
jenya7Я пробовал работать с массивом объектов.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
if (data_grid.Rows.Count > 0)
{
     data = new object[data_grid.Rows.Count];
     for (int j = 0; j < data_grid.Rows.Count; j++)   //data_grid.Rows.Count = 670000
     {
             data[j] = data_grid.Rows[j].Cells[comboBoxColumns.Text].Value; 
     }
 }


но на 670000 строк получаю эксепшен:
Exception of type 'System.OutOfMemoryException' was thrown.
И зачем Вы обращаетесь к DataGridView за данными?

Приведите весь пример, в том числе и тот кусочек кода, с помощью которого Вы выбираете данные...
...
Рейтинг: 0 / 0
Представление данных в графике.
    #38204977
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Alex KuznetsovИ зачем Вы обращаетесь к DataGridView за данными?
+1
...
Рейтинг: 0 / 0
Представление данных в графике.
    #38205855
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alex KuznetsovТ.е. как это? В DataTable.Columns[i] отсутствует информация о типе поля?
А как же : http://msdn.microsoft.com/ru-ru/library/system.data.datacolumn(v=vs.100).aspx


Точно! А я не знал. Теперь конечно попроще - объект можно привестик типу данных.

Alex KuznetsovИ зачем Вы обращаетесь к DataGridView за данными?


Ну мне же нужны данные для графика. Хотя тперь, как я понимаю их можно брать прямо из DataTable.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
 private DataTable RunSqlQuery(string qry)
        {
            DataTable data_table = new DataTable();
            try
            {
                using (connection)
                {
                    connection = new MySqlConnection(Globals.connection_string);
                    connection.Open();

                    sqlDataAdapter = new MySqlDataAdapter(qry, connection);
                    sqlDataAdapter.SelectCommand.CommandTimeout = Globals.command_timeout;
                    sqlCommandBuilder = new MySqlCommandBuilder(sqlDataAdapter);

                    sqlDataAdapter.Fill(data_table);
                    bindingSource = new BindingSource();
                    bindingSource.DataSource = data_table;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }

            return data_table;
        }
...
Рейтинг: 0 / 0
Представление данных в графике.
    #38206308
Alex Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7Ну мне же нужны данные для графика. Хотя тперь, как я понимаю их можно брать прямо из DataTable.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
 private DataTable RunSqlQuery(string qry)
        {
            DataTable data_table = new DataTable();
            try
            {
                using (connection)
                {
                    connection = new MySqlConnection(Globals.connection_string);
                    connection.Open();

                    sqlDataAdapter = new MySqlDataAdapter(qry, connection);
                    sqlDataAdapter.SelectCommand.CommandTimeout = Globals.command_timeout;
                    sqlCommandBuilder = new MySqlCommandBuilder(sqlDataAdapter);

                    sqlDataAdapter.Fill(data_table);
                    bindingSource = new BindingSource();
                    bindingSource.DataSource = data_table;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }

            return data_table;
        }


Так их именно оттуда и нужно брать.
Хотя, если известны поля, по которым будет строиться график, то можно обойтись даже и без DataTable.
DataReader - это Вам для изучения...
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Представление данных в графике.
    #38846567
Ренальд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DataGridView и Chart.
Никогда раньше не программировал БД.
Просмотрел гугл. Нашел мало инфы.
Есть таблица c полями [00-06],[06-12],[12-18],[18-00]
В них значения integer

Нужно в Chart вывести инфу с одной строки (строк много). Я не знаю как. Поискав могу только по колонке выводить данные.
Код:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
Dim selectCommand As String
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        selectCommand = "select [00-06],[06-12],[12-18],[18-00] from tb_ps12"
        Try
            Dim connectionString As String = "Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\uspd.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"
            Dim dataAdapter = New SqlDataAdapter(selectCommand, connectionString)
            Dim commandBuilder As New SqlCommandBuilder(dataAdapter)
            Dim table As New DataTable()

            table.Locale = System.Globalization.CultureInfo.InvariantCulture
            dataAdapter.Fill(table)
            Me.BindingSource1.DataSource = table
                    Catch ex As SqlException
            MessageBox.Show("Ошибка")
        End Try
        DataGridView1.DataSource = Me.BindingSource1

        Me.DataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader)
        Chart1.DataSource = DataGridView1
        'Chart1.DataSource = Me.BindingSource1

        Chart1.Series("Series1").XValueMember = "00-06"
         Chart1.Series("Series1").YValueMembers = "06-12"
        ' привязка графика к источнику данных
        Chart1.DataBind()
    End Sub
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Представление данных в графике.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]