#492 - Aggiungere i record totali nel footer di un DataGrid

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.
http://www.aspitalia.com/ricerca/super.aspx?usag=1&key=paginazione+datagrid


Approfondimenti

Commenti

Esprimi il tuo giudizio su questo script:

Per procedere devi essere autenticato.

Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.




IN EVIDENZA
MISC