viernes, septiembre 11, 2026

Limitar el número de Rows en el DataGrid

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




Roy Rojashttp://www.dotnetcr.com
Con más de 20 años de experiencia en programación, experto en lenguajes .NET, VB, C#, ASP.NET, Xamarin, XCode, DBA en SQL Server. Creador de dotnetcr.com, sitio web para programadores en español. royrojas.com | dotnetcr.com | GitHub

Redes Sociales

2,736FansMe gusta
326SeguidoresSeguir

Popular esta semana

Cómo retornar JSON desde un WebService en .NET

JSON es uno de los protocolos de intercambio de datos mas populares y eficientes del momento, saber como exportar nuestros datos desde .NET es muy importante. En este ejemplo explicamos como exportar estos datos en un Webservice.

Como reducir el tamaño de la base de datos y del log en SQL...

El objetivo de este artículo es optimizar nuestra base de datos utilizando las herramientas SQL Enterprise Manager y SQL Query Analyzer, reduciendo el tamaño de la base de datos y del log en SQL Server
C# - PDF417

Crear código PDF417 con iTextSharp y XZing en C# .NET

Para crear códigos PDF417 existen herramientas que podemos agregar a nuestra aplicaciones. En este ejemplo vamos explicar como utilizar iTextSharp y ZXing.

Últimos artículos

SQL Server MERGE

MERGE in SQL Server for Insert, Delete and Update with two tables

Practical example using MERGE to synchronize two tables, Insert, Update and Delete in a single query. Valid for SQL SERVER 2008 or...

Como crear una API REST con ASP.NET Core 6.0

Crear una API REST con C# en ASP.NET es un proceso sencillo y rápido que permite exponer un conjunto de recursos a...
Machine Learning & Python

Introducción a Machine Learning en Python

Machine Learning es una rama de la inteligencia artificial que se enfoca en el desarrollo de sistemas que pueden aprender de...
SQL Server MERGE

MERGE en SQL Server, como utilizarlo de forma sencilla

El comando MERGE en SQL Server se utiliza para combinar datos de varias tablas en una sola tabla. Es útil para actualizar...