Ciao, non mi ero accorto del post...
ecco il codice...
fammi sapere cosa ne pensi.
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.ComponentModel;
/// <summary>
/// Summary description for MyGridView
/// </summary>
namespace myNamespace
{
public class GridCount : GridView
{
/// <summary>
/// Variabile privata che contiene il numero di elementi della griglia.
/// </summary>
private int _totalRowCount;
/// <summary>
/// Testo del messaggio che descrive il numero degli elementi.
/// </summary>
private string _rowCountCaption = "Item totali: ";
/// <summary>
/// Indica se il messaggio del numero di elementi è visibile o no.
/// </summary>
private bool _enableRowCountCaption = true;
/// <summary>
/// Costruttore della classe.
/// </summary>
public GridCount() { }
/// <summary>
/// Override della proprietà Caption.<br/>
/// Get: Ritorna la Caption se il messaggio del numero di elementi è disabilitato.<br/>
/// Ritorna la concatenazione della Caption con il numero di elementi se abilitato.<br/>
/// Set: Imposta solo la Caption.
/// </summary>
public override string Caption
{
get
{
if (_enableRowCountCaption)
{
return base.Caption + " " + _rowCountCaption + _totalRowCount;
}
else
{
return base.Caption;
}
}
set
{
base.Caption = value;
}
}
/// <summary>
/// Override del metodo OnDataBound.<br/>
/// Se non è abilitata la paginazione imposta il numero delle righe totali.
/// </summary>
/// <param name="e">Oggetto System.EventArgs che contiene i dati dell'evento.</param>
protected override void OnDataBound(EventArgs e)
{
base.OnDataBound(e);
if (!base.AllowPaging)
{
_totalRowCount = base.Rows.Count;
}
}
protected override void OnRowCommand(GridViewCommandEventArgs e)
{
_totalRowCount = base.Rows.Count;
base.OnRowCommand(e);
}
/// <summary>
/// Override del metodo InitializePager.<br/>
/// Quando è abilitata la paginazione imposta il numero delle righe totali.
/// </summary>
/// <param name="row">Oggetto System.Web.UI.WebControls.GridViewRow che rappresenta la riga di spostamento da inizializzare.</param>
/// <param name="columnSpan">Numero di colonne su cui deve estendersi la riga di spostamento.</param>
/// <param name="pagedDataSource">Oggetto System.Web.UI.WebControls.PagedDataSource che rappresenta l'origine dati.</param>
protected override void InitializePager(GridViewRow row, int columnSpan, PagedDataSource pagedDataSource)
{
base.InitializePager(row, columnSpan, pagedDataSource);
_totalRowCount = pagedDataSource.DataSourceCount;
}
/// <summary>
/// Restituisce il numero totale di elementi nella griglia.
/// </summary>
[Bindable(false)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
[Browsable(false)]
public int TotalRowCount
{
get
{
return _totalRowCount;
}
}
/// <summary>
/// Ottiene o imposta il messaggio che precede il numero degli elementi della griglia.
/// </summary>
[Bindable(false)]
[Browsable(true)]
public string RowCountCaption
{
get
{
return _rowCountCaption;
}
set
{
_rowCountCaption = value;
}
}
/// <summary>
/// Abilita o disabilita la visualizzazione del messaggio del numero totale di elementi della griglia.
/// </summary>
[Bindable(false)]
[Browsable(true)]
public bool EnableRowCountCaption
{
get
{
return _enableRowCountCaption;
}
set
{
_enableRowCountCaption = value;
}
}
}
}