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

3975 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.



csharp
  1. //...
  2. public class MonDataGrid : DataGrid
  3. {
  4.   //...
  5.  
  6.   // proppiedad pública que tendrá el número de líneas
  7.   public int DataRowsCount
  8.   { get{ return this.currentDataRowsCount;}}
  9.  
  10.   private int currentDataRowsCount;
  11.  
  12.   // sobrecarga de MyBase.OnDataSourceChanged
  13.   protected override void OnDataSourceChanged(System.EventArgs e)
  14.   {
  15.     if(this.DataSource!=null)
  16.     { this.currentDataRowsCount = this.BindingContext[this.DataSource, this.DataMember].Count;}
  17.     else
  18.     { this.currentDataRowsCount = 0;}
  19.  
  20.     base.OnDataSourceChanged(e);
  21.   }
  22. }



Y podemos usarlo de la forma siguiente:



csharp
  1. using System.Text;
  2. //...
  3. private void DataGrid1DataSourceChanged(object sender, EventArgs e)
  4. {
  5.     StringBuilder sb = new StringBuilder("Número de líneas: ");
  6.     sb.Append(((MonDataGrid)sender).DataRowsCount.ToString());
  7.  
  8.     this.LComment.Text = sb.ToString();
  9. }