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
