DotNetcr.com
Si deseas hacer un intercambio de links con DotNetcr, escríbenos aquí
Recibe las actualizaciones vía RSS
Te invitamos a unirte en nuestras redes
   http://www.facebook.com/DotNetcr
   http://www.twitter.com/dotnetcr

Limitar el número de Rows en el DataGrid

Por royrojas | 9/11/2005 | Visitas 15,153 | Voto 5.00
El datagrid que provee el Framework de .Net no tiene una propiedad que limite el numero de rows que se pueden agregar en el DataGrid. Aquí está el código.
Categorías : VB.NET, Componentes VB.NET
Con este código puedes restringir la cantidad de registros que deseamos ingresar en nuestro DataGrid.

Para esto vamos a crear un control que herede de System.Windows.Forms.DataGrid y vamos a sobreescribir el procedimiento ColumnStartedEditing, que se ejecuta siempre que se edita algún dato del DataGrid.

También vamos a necesitar una función que nos retorne el numero de rows en el DataGrid, para comparar con el valor que nosotros le indiquemos. Ver función CuentaLineasDataGrid.

Otra función que vamos a necesitar es la que publicamos en un artículo anterior, "Impedir agregar nuevos rows en el Datagrid", que nos elimina la línea del asterisco, que está al final del DataGrid y le indicamos al DataView que no acepte mas registros. Ver función PermiritNewRow.

Al crear las propiedades AceptarNewRows() y CantidadRowsPermitidos(), cuando agreguemos el DataGrid que acabamos de modificar, en la ventana de propiedades vamos a poder controlarlos:

Le indicamos el si aceptamos nuevos rows, valores True o False


Le indicamos la cantidad de rows máximo que deseamos ingresar, en el caso de que no necesitemos un límete de rows le dejamos el valor defaul 0.


El código completo aquí:

Imports System.ComponentModel
Imports System.Windows.Forms

Public Class MyDataGrid
Inherits System.Windows.Forms.DataGrid

#Region " Variables "

Private _CantidadRowsPermitidos As Integer = Nothing
Private _AceptarNewRows As Boolean = True

#End Region

#Region " Propiedades "

<Description("Indica la cantidad de rows permitidos en el DataGrid")> _
Public Property CantidadRowsPermitidos() As Integer
Get
Return _CantidadRowsPermitidos
End Get
Set(ByVal Value As Integer)
_CantidadRowsPermitidos = Value
End Set
End Property

<Description("Indica si se permite agregar nuevos rows al DataGrid")> _
Public Property AceptarNewRows() As Boolean
Get
Return _AceptarNewRows
End Get
Set(ByVal Value As Boolean)
_AceptarNewRows = Value
End Set
End Property

#End Region

'Procedimiento que le indica al datagrid si se pueden agregar o no mas rows
Private Sub PermiritNewRow(ByVal valor As Boolean)
Try
Dim cm As CurrencyManager = CType(Me.BindingContext(Me.DataSource, Me.DataMember), CurrencyManager)
CType(cm.List, DataView).AllowNew = valor
Catch ex As Exception
Throw ex
End Try
End Sub

<Description("Retorna el número de rows en el DataGrid")> _
Public Function CuentaLineasDataGrid() As Integer
Try
Dim numRows As Integer = Me.BindingContext(Me.DataSource, Me.DataMember).Count
Return numRows
Catch ex As Exception
Throw ex
End Try
End Function

Protected Overloads Overrides Sub ColumnStartedEditing(ByVal bounds As System.Drawing.Rectangle)
Try
If Me.AceptarNewRows Then
If Me.CuentaLineasDataGrid <= CantidadRowsPermitidos Or
CantidadRowsPermitidos = 0 Then
MyBase.ColumnStartedEditing(bounds)
AceptarNewRows = True
Else
AceptarNewRows = False
End If
Else
AceptarNewRows = False
End If

PermiritNewRow(AceptarNewRows)
Catch ex As Exception
Throw ex
End Try
End Sub

End Class
Area de Comentarios
Por Anónimo - Fecha: 2006/09/27 04:42 PM
Muchas gracias, me ha sido de gran ayuda el código :)
dmX
Por Anónimo - Fecha: 2007/03/22 04:59 PM
perdon la ignorancia .. .ahora como hago para insertar en mi forma un objeto con estas propiedades que le agregamos al DataGrid??
Por rody - Fecha: 2007/08/13 02:55 PM
POR FAVOR, AYUDA..!!!Cómo puedo cargar campos especificos de varias tablas a un datagrid o gridview filtrandolo por fecha (la fecha se especifica en un dtpicker del formulario). Una vez cargado, como hacer cuando le de un click a una linea del grid y me aparezca contenido en varios text, incluso en un picture, relacionado a la linea seleccionada....DE ANTEMANO MUCHAS GRACIAS
Por Anónimo - Fecha: 2008/01/11 01:40 PM
aqui hay otro ejemplo
http://www.dotnetcr.com/Libreria.aspx?art=76&tag=Como-podemos-ocultar-una-columna-del-DataGrid
Por Anónimo - Fecha: 2010/07/28 05:05 PM
excelente gracias, de mucha ayuda
Por Anónimo - Fecha: 2011/12/01 12:30 PM
como puedo sumar horas y fechas algo asi 30/11/2011 hora actual 13:00 ahi le sumo 12 horas y debe salir asi 01/11/2011 00:00
Por Anónimo - Fecha: 2012/07/19 10:57 AM
“Open in Excel”: Another AIR 2 Mini Sample (tags: flex air as3 excel) This was written by andy. Posted on Saturday, December 5, 2009, at 1:35 am. Filed under Delicious. Bookmark the perimlank. Follow comments here with the RSS feed. Post a comment or leave a trackback.
Por Anónimo - Fecha: 2012/07/20 07:30 AM
PN4DKh , [url=http://eawoxjozrzto.com/]eawoxjozrzto[/url], [link=http://gnzpmkjysxuo.com/]gnzpmkjysxuo[/link], http://bvrmxsbxcujm.com/
Por Anónimo - Fecha: 2012/07/21 01:41 PM
J7MJNr , [url=http://tlbkyicysupx.com/]tlbkyicysupx[/url], [link=http://fuyxpggtrskq.com/]fuyxpggtrskq[/link], http://yxkgtpvuzoll.com/
Por Anónimo - Fecha: 2015/12/17 03:44 PM
( 2012.02.19 07:44 ) : Hey I know this is off topic but I was wondering if you knew of any wedtigs I could add to my blog that automatically tweet my newest twitter updates. I've been looking for a plug-in like this for quite some time and was hoping maybe you would have some experience with something like this. Please let me know if you run into anything. I truly enjoy reading your blog and I look forward to your new updates.
Por Anónimo - Fecha: 2015/12/19 02:50 AM
( 2012.02.20 23:02 ) : This can be a greatest full week of one's metaurnsl cycle to completely clean your own car port, accomplish washing, any activity that requires a good deal of bodily vitality. As a result of estrogen's affect about the hippocampus, the particular aspect using the brain that is certainly to blame for lasting memory space, this is actually the wonderful time in the 30 days to look at standard exams, written assessments, as well as continue function interview. Your spoken ability is a sharpest; you do not be at a loss pertaining to terms during this week. Point out what you suggest along with suggest that which you declare. Rationally, this might be the best full week to get rid of upwards with your sweetheart; hormonally this can not the top 7 days if you're just attracted to your conduct coworker. Examine the evaluation during the winter weather to decide should you be communicating through your soul of sex drive. http://yiezys.com [url=http://lktnjhgixd.com]lktnjhgixd[/url] [link=http://yjhkuk.com]yjhkuk[/link]
Por Anónimo - Fecha: 2015/12/20 02:23 PM
I'm just writing to make you utaresndnd what a excellent encounter my cousin's princess enjoyed reading your blog. She came to find many things, not to mention what it is like to have an awesome coaching nature to make many people effortlessly learn about specific hard to do topics. You truly exceeded readers' expectations. Many thanks for supplying those productive, trusted, edifying and in addition unique tips about this topic to Janet. http://llnikiy.com [url=http://otnjoqxcel.com]otnjoqxcel[/url] [link=http://ecerwmbxmwr.com]ecerwmbxmwr[/link]
Ingrese su Comentario
Comentario
Para poder votar debe estar registrado en DotNetcr.com
Solo queda registrado el primer voto enviado
Voto


Últimos Recursos
ricardo leppe t
pedrojavier
CALIN
willipinru
richard
ragomez
PER 238
MEX 236
CRI 188
COL 118
ESP 105
ARG 88