Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Представление данных в графике. / 8 сообщений из 8, страница 1 из 1
27.03.2013, 17:22
    #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
27.03.2013, 18:43
    #38201108
Alex Kuznetsov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Представление данных в графике.
jenya7,

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

Может как-то расширите свой вопрос?
...
Рейтинг: 0 / 0
28.03.2013, 15:58
    #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
29.03.2013, 14:05
    #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
29.03.2013, 20:14
    #38204977
Cat2
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Представление данных в графике.
Alex KuznetsovИ зачем Вы обращаетесь к DataGridView за данными?
+1
...
Рейтинг: 0 / 0
31.03.2013, 09:28
    #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
31.03.2013, 21:20
    #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
Период между сообщениями больше года.
30.12.2014, 14:21
    #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
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Представление данных в графике. / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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