Aggiungere i record totali nel footer di un DataGrid

di Daniele Bochicchio, in ASP.NET, ADO.NET, DataBinding,

Il DataGrid è uno dei Web Controls più utilizzato, per via della sua potenza e della sua enorme flessibilità.
Una mancanza che ha è però il supporto diretto per la visualizzazione dei record totali restituiti da una query.
La cosa è facilmente aggirabile utilizzando uno script come questo, che recupera il numero di righe della DataTable utilizzata, le salva in una variabile, che poi useremo nell'evento OnItemCreated per modificare il footer, eliminare le celle non necessarie, e visualizzare invece il numero totale di record.
Ecco l'esempio:

<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<SCRIPT RUNAT="SERVER" Language="C#">
string TotalRecords = "Record totali: ";

void Page_Load() {
   // connessione
  string connstring = "server=localhost;trusted_connection=true;";

   SqlConnection conn = new SqlConnection(connstring);

  // query tramite DataAdapter
   SqlDataAdapter query = new SqlDataAdapter("SELECT * FROM tabella", conn);

  // popolamento del DataSet
  DataSet ds = new DataSet();
  query.Fill(ds,"Ricerca");

  // numero totale di record del DataTable
  TotalRecords += ds.Tables["Ricerca"].Rows.Count.ToString();

  dg.DataSource = ds.Tables["Ricerca"].DefaultView;
  dg.DataBind();

}

void dg_ItemCreated(Object o, DataGridItemEventArgs e) {
  // se è il footer
  if (e.Item.ItemType == ListItemType.Footer) {
    // riferimento alla cella corrente - aggiungo il testo
    ((TableCell)e.Item.Cells[0]).Controls.Add(new LiteralControl(TotalRecords));
    // occupo tutto le colonne
    ((TableCell)e.Item.Cells[0]).ColumnSpan = e.Item.Cells.Count;

    // rimuovo le altre colonne
    for (int i=1; i<e.Item.Cells.Count; i++){
      e.Item.Cells.RemoveAt(1);
    }
  }
}

</SCRIPT>
<form runat="server">
  <asp:datagrid id="dg" runat="server" OnItemCreated = "dg_ItemCreated" ShowFooter="true" />
</form>

A questo script si può facilmente aggiungere anche una paginazione, per rendere ancora più funzionale il tutto.
https://www.aspitalia.com/ricerca/super.aspx?usag=1&key=paginazione+datagrid

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi