2011-03-05 28 views
7

? Me cuesta creer que esto no se haya preguntado antes, pero no parece haber sido así y mis búsquedas de Google han sido en vano.¿Puedo establecer el número máximo de filas en ung DataView

¿Puedo establecer un número máximo de filas que un DataGridView permitirá que agregue un usuario? (¿Al igual que después de agregar la décima fila ya no se mostrará la fila de 'nueva fila'?).

Respuesta

9

No hay una propiedad directa para hacer esto, pero debería poder lograr esto bastante fácilmente usando una combinación de la propiedad AllowUserToAddRows y el evento UserAddedRow.

La idea general es agregar un controlador de eventos para comprobar el número de filas en contra de la máximo permitido, a continuación, establezca AllowUserToAddRows = false

public partial class frmGridWithRowLimit : Form 
{ 
    public Int32 MaxRows { get; set; } 

    public frmGridWithRowLimit() 
    { 
     MaxRows = 10; 

     InitializeComponent(); 

     dgRowLimit.UserAddedRow += dgRowLimit_RowCountChanged; 
     dgRowLimit.UserDeletedRow += dgRowLimit_RowCountChanged; 
    } 

    private void dgRowLimit_RowCountChanged(object sender, EventArgs e) 
    { 
     CheckRowCount(); 
    } 

    private void CheckRowCount() 
    { 
     if (dgRowLimit.Rows != null && dgRowLimit.Rows.Count > MaxRows) 
     { 
      dgRowLimit.AllowUserToAddRows = false; 
     } 
     else if (!dgRowLimit.AllowUserToAddRows) 
     { 
      dgRowLimit.AllowUserToAddRows = true; 
     } 
    } 
} 

También tendrá que superar cuando un usuario elimina una fila de asegúrese de permitirles agregar filas nuevamente.

Esperanza esto ayuda

Cheers, Josh

+0

Hey, gracias ... MaxRows Convenientemente es una constante en mi caso, ni siquiera tiene que preocuparse de cambiar ese valor. Voy a darle un giro, luego vuelvo y te otorgaré tus 25 puntos. :) – Crisfole

+0

Hermoso. ¡Estaba intentando algo casi idéntico a esto pero me había perdido varias partes importantes! ¡Todavía estoy sorprendido de que una "hilera máxima" no esté incorporada! :) – Crisfole

+0

@Cpfohl, Probablemente porque realmente solo funciona en este escenario particular, y la mayoría de la gente usa cuadrículas con DataBinding. Hay una serie de problemas involucrados si está tratando de hacer esto con una cuadrícula de datos encuadernados. ** Vale la pena mencionar ** que esto no tiene en cuenta las filas agregadas mediante programación. Sin embargo, si eso no va a suceder en su escenario, la solución anterior debería ser suficiente. – Josh

Cuestiones relacionadas