Las columnas recreadas en un DataGridView

Tengo un DataGridView en forma de Windows. Definí 5 columnas para este DataGridView dgv.

La tabla de datos devuelta por un procedimiento almacenado está vinculada con este DataGridView.

         DataTable table1 = returned by a stored procedure in C#;
         dgv.DataSource = table1;
         dgv.AutoGenerateColumns = false;
         dgv = System.Windows.Forms.DataGridViewEditMode.EditProgrammatically; 

Luego en otro evento de botón. Quiero volver a vincular DataGridView a una fuente de datos.

      DataTable dt1 = new DataTable();

Entonces

 DataRow dr = dt1.NewRow();
            dr["Interval"] = txtBox1.Text;
            dr["Count"] = txtBox2.Text;
            dr["AgeBegin"] = txtBox3.Text;
            dr["AgeEnd"] = txtBox4.Text;
            dr["Gender"] = txtBox5.Text;
            dt1.Rows.Add(dr);
            dgv.DataSource = dt1;

dt1 solo tiene una fila. Ahora dgv muestra 10 columnas. Las primeras 5 columnas están vacías, las últimas 5 columnas tienen datos reales.

¿Por qué? Gracias.

preguntado el 12 de junio de 12 a las 19:06

¿Cuáles son los encabezados de esas columnas? ¿Coinciden con sus encabezados? -

Intente configurar el DataPropertyName -

@K'Leg, las columnas son las mismas pero el encabezado es un poco diferente. -

"dgv = System.Windows.Forms.DataGridViewEditMode.EditProgrammatically;" esta línea no compila. -

He probado esto y haciendo exactamente lo que está haciendo, no puedo duplicar el problema, incluso eliminé las columnas de generación automática, y aún así solo obtengo 5. ¿Está predefiniendo las columnas en su vista de cuadrícula de datos? Sugeriría dejarlo en blanco para comenzar y permitir que las columnas se generen automáticamente, al menos hasta que descubra la falla:

2 Respuestas

Necesitas configurar AutoGenerateColumns a false antes lo asignas a la DataSource

DataTable table1 = returned by a stored procedure in C#;
dgv.AutoGenerateColumns = false; // Before assigning the DataSource
dgv.DataSource = table1;
...

Respondido el 12 de junio de 12 a las 19:06

eso tendría sentido, pero es cuando cambia la fuente de datos cuando surge el problema: Gris general

Datagridviews agrega filas automáticamente si no hay un lugar para colocar los datos. A menos que le diga que no lo haga, lo cual no es una opción en el diseñador.

dgv.AutoGenerateColumns=false;

No importa que ya tengas esto.

No debería tener que hacerlo, pero ¿ha intentado borrar el dgv antes de volver a enlazarlo, solo para tratar de encontrar el problema?

¿Está predefiniendo las columnas en su vista de cuadrícula de datos? Sugeriría dejarlo en blanco para comenzar y permitir que las columnas se generen automáticamente, al menos hasta que descubras la falla.

Respondido el 12 de junio de 12 a las 19:06

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.