Tengo un script que en algún momento crea un gráfico a partir de un DataGrid, este DataGrid contiene 3 columnas: ahora el problema es que cuando se genera el gráfico, la primera fila siempre se duplica y la coloca entre todas las otras barras del gráfico .
Ejemplo: supongamos que el gráfico debe ser A-B-C, en lugar de A-A-B -A-C, de manera similar.
Consulte la captura de pantalla aquí: gráfico resultante
El código fuente que utilicé es este:
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 respuestas
Ok, no tengo idea de por qué esto funciona, pero al agregar este código justo después de que la inicialización del ciclo for resolvió el problema, no solo se duplicó la primera fila, sino todas las filas después de que se puso:
if (i == dataGridView1.Rows.Count - dataGridView1.Rows.Count)
{
foreach (var series in chart1.Series)
{
series.Points.Clear();
}
}
Probar esto -
//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);
}
}
Preguntas relacionadas
Nuevas preguntas
c#
C # (pronunciado "see sharp") es un lenguaje de programación multi-paradigma de alto nivel, estáticamente tipado desarrollado por Microsoft. El código C # generalmente se dirige a la familia de herramientas y tiempos de ejecución .NET de Microsoft, que incluyen .NET Framework, .NET Core y Xamarin, entre otros. Use esta etiqueta para preguntas sobre el código escrito en las especificaciones formales de C # o C #.