Obtener el número de línea de un DataGrid mediante su BindingContext

1977 vistas

La propiedad DataGrid.BindingContext permite acceder al indexador del objeto BindingManagerBase subyacente y, por lo tanto, acceder a su propiedad BindingManagerBase.Count.

Para ver un ejemplo, vamos a implementar nuestra propia clase MiDataGrid derivada de DataGrid.



vbnet
  1. '...
  2. Public Class MiDataGrid
  3.   Inherits DataGrid
  4.  
  5.   ' ...
  6.   ' proppiedad pública que tendrá el número de líneas
  7.   Public ReadOnly Property DataRowsCount() As Integer
  8.     Get
  9.         Return Me.currentDataRowsCount
  10.     End Get
  11.   End Property
  12.  
  13.   Private currentDataRowsCount As Integer
  14.    
  15.   ' sobrecarga de MyBase.OnDataSourceChanged
  16.   Protected Overloads Overrides Sub OnDataSourceChanged(ByVal e As System.EventArgs)
  17.         If Not (Me.DataSource Is Nothing) Then
  18.             Me.currentDataRowsCount = Me.BindingContext(Me.DataSource, Me.DataMember).Count
  19.         Else : Me.currentDataRowsCount = 0
  20.         End If
  21.     MyBase.OnDataSourceChanged(e)
  22. End Sub
  23. End Class



Y podemos usarlo de la forma siguiente:



vbnet
  1. Imports System.Text
  2. '...
  3. Private Sub DataGrid1DataSourceChanged(ByVal sender As Object, ByVal e As EventArgs)
  4.     Dim sb As StringBuilder = New StringBuilder("Número de líneas: ")
  5.     sb.Append(CType(sender, MiDataGrid).DataRowsCount.ToString())
  6.     Me.LComment.Text = sb.ToString()
  7. End Sub