213 messaggi dal 25 settembre 2006
Davvero interessante.
Strano però che in un controllo così complesso e completo manchi questa informazione.
Prendendo spunto da questo esempio ho creato una mia classe derivata da GridView che mostra il numero di righe totali come intestazione della griglia anche quando non è abilitata la paginazione. Ho fatto l'override di Caption, OnDataBound e InitializePager ed aggiunto la proprietà RowCountCaption per personalizzare il messaggio del conteggio.

Se può essere utile a qualcuno posso postare il codice.

Ciao.
1 messaggio dal 09 ottobre 2006
Magari ... sarebbe molto utile.

Grazie mille.
Ciao, fammi sapere.
213 messaggi dal 25 settembre 2006
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;
         }
      }
   }
}

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.