Pregunta

¿Cómo agrego filas programáticamente a una DataGridTable en C #? Cuando el usuario selecciona una opción, quiero volver a llenar una tabla de tabla de datos con datos nuevos, que estoy adquiriendo como se muestra a continuación:

        connect.Open();
        MySqlCommand comm = connect.CreateCommand();
        comm.CommandText = getCustomerInvoices + customerID + "\'";
        MySqlDataReader r = comm.ExecuteReader();
        while (r.Read())
        {
            DataGridViewRow d = new DataGridViewRow();
            String[] parameters = new String[5];
            parameters[0] = r.GetValue(0).ToString();
            parameters[1] = r.GetValue(1).ToString();
            parameters[2] = r.GetValue(2).ToString();
            parameters[3] = r.GetValue(3).ToString();
            parameters[4] = r.GetValue(4).ToString();
            d.SetValues(parameters);
            invoiceTable.Rows.Add(d);
        }
        connect.Close();

Lo que parece suceder es que me agregan una nueva fila a la tabla, pero las filas antiguas todavía están allí, y la nueva fila no parece tener ningún valor (un montón de cuadros de texto en blanco, y sé que esta consulta está devolviendo un resultado en mi caso de prueba).

¿Puede alguien explicarme lo que tengo que hacer?

¿Fue útil?

Solución

Creo que Rows.Add () tiene una sobrecarga para una matriz de cadenas. Si está creando una matriz de cadenas de todos modos, ¿por qué no intenta usarla? es decir, en lugar de:

d.SetValues(parameters);
invoiceTable.Rows.Add(d);

usted usaría juse:

invoiceTable.Rows.Add(parameters);

Alternativamente, si aún desea crear un objeto DataGridViewRow y llamar a setvalues, creo que necesita convertir la matriz en una matriz de tipo Object, o pasar cada valor como su propio argumento en lugar de pasar la matriz.

Otros consejos

Creo que necesitas llamar a .CreateCells (GridName) antes de llamar a setvalue

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top