от datagridview к графику C# удвоение первой строки - PullRequest
0 голосов
/ 22 февраля 2020

У меня есть скрипт, который в какой-то момент создает диаграмму из DataGrid, эта DataGrid содержит 3 столбца: теперь проблема в том, что при создании диаграммы первая строка всегда удваивается и помещает ее между всеми другими барами по графику.

Пример - скажем, если график должен быть AB- C, а не AAB -A- C, как мудрый.

См. Скриншот здесь - результирующий график

Исходный код, который я использовал, таков:

 for (int i = 0; i < dataGridView1.Rows.Count; i++) 
 {
  this.chart1.Series["Spent hr"].Points.AddXY(dataGridView1.Rows[i].Cells[0].Value.ToString(), Convert.ToInt32(dataGridView1.Rows[i].Cells[1].Value.ToString()));
  this.chart1.Series["Budgeted hr"].Points.AddXY(dataGridView1.Rows[i].Cells[0].Value.ToString(), Convert.ToInt32(dataGridView1.Rows[i].Cells[2].Value.ToString()));
 }

Ответы [ 2 ]

0 голосов
/ 22 февраля 2020

Попробуйте это -

    //filling the Coloumns
    dataGridView1.Rows.Clear();
    dataGridView1.Columns.Clear();

    dataGridView1.Columns.Add("name", "Column1");
    dataGridView1.Columns.Add("budgetedhr", "Column2");
    dataGridView1.Columns.Add("spenthr", "Column3");

    // filling in Rows with some data
    dataGridView1.Rows.Add("Jhon", 21, 23);
    dataGridView1.Rows.Add("Nicol", 31, 2);
    dataGridView1.Rows.Add("Matteo", 23, 41);

    // Now we can set up the Chart:
    List<Color> colors = new List<Color> { Color.Green, Color.Red};

    chart1.Series.Clear();

    for (int i = 0; i < dataGridView1.Rows.Count; i++)
    {
        Series S = chart1.Series.Add(dataGridView1[0, i].Value.ToString());
        S.ChartType = SeriesChartType.Column;
        S.Color = colors[i];
    }

    // and fill in all the values from the dgv to the chart:
    for (int i = 0; i < dataGridView1.Rows.Count; i++)
    {
        for (int j = 1; j < dataGridView1.Columns.Count; j++)
        {
            int p = chart1.Series[i].Points.AddXY(dataGridView1.Columns[j].HeaderText, dataGridView1[j, i].Value);
        }
    }
0 голосов
/ 22 февраля 2020

хорошо, я понятия не имею, почему это работает, но добавление этого кода сразу после инициализации цикла for решило проблему, это было не только дублирование первой строки, но и каждой строки после ее вставки:

                        if (i == dataGridView1.Rows.Count - dataGridView1.Rows.Count)
                        {
                            foreach (var series in chart1.Series)
                            {
                                series.Points.Clear();
                            }

                        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...