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
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.