Volete sapere quanto sono cotto?, fate un salto quà .
Volevo scrivere come recuperare il VirtualItemCount utilizzando un ControlAdapter, ma vuoi i film scadenti che vedo, il caldo, la voglia di ferie ho fatto un gran casino :D confondento il numero totale delle pagine, facilmente accessibile e il numero totale di item, nascoso nel ViewState come spiega Andrea Boschin
cospargendomi il capo di cenere posto il codice corretto:
using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.Adapters; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls.Adapters; using System.Reflection; using System.Collections; namespace Adapter { public class DataGridFx : DataBoundControlAdapter { private GridView control = null; private Control controlPager = null; protected override void OnInit(EventArgs e) { base.OnInit(e); control = this.Control as GridView; //ottenuto il riferimento al GridView registo un EventHandler per la creazione nelle righe if (Control != null) { control.RowCreated += new GridViewRowEventHandler(control_RowCreated); } } protected override void PerformDataBinding(IEnumerable data) { base.PerformDataBinding(data); //solo al termine del databind il numero di item totali viene aggiunto al ViewState Type type = typeof(Control); //tramite reflection ottengo il ViewState FieldInfo info = type.GetField("_viewState", BindingFlags.NonPublic | BindingFlags.Instance); StateBag value = (StateBag)info.GetValue(this.Control); //creo i controlli necessari a inserire visualizzare il numero totale di item Literal lit = new Literal(); lit.Text = string.Concat("item totali: ", value["_!ItemCount"]); TableCell cel = new TableCell(); //infieno l'aggiungo alla collezione del controllo recuperato nel metodo control_RowCreated cel.Controls.Add(lit); if (controlPager != null) { controlPager.Controls.Add(cel); } } void control_RowCreated(object sender, GridViewRowEventArgs e) { //ottengo il riferimento al controllo dove inserire il numero di item totali if (e.Row.RowType == DataControlRowType.Pager) { controlPager = e.Row.Controls[0].Controls[0].Controls[0]; } } }
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Nella stessa categoria
- Modificare il controllo TreeView, il 2 dicembre 2008 alle 19:27
- Perfezioniamo il ProfileDataSorce, il 13 ottobre 2008 alle 11:14
- Un DataSource per il Profile, il 10 ottobre 2008 alle 15:06
- TrueSpace 7 gratuito, il 24 luglio 2008 alle 10:59
- adesso dico la mia sull'Iphone, il 22 luglio 2008 alle 10:33
- Come tutto ebbe inizio, il 21 luglio 2008 alle 09:22
I più letti del mese