molto bello... ma c'è un problema/modifica da fare...

se metto
<code>
<HeaderTemplate>
<h1>titolo</h1>
<div>
</HeaderTemplate>
<ItemTemplate>
....
</ItemTemplate>
<EmptyTemplate>
no data
</EmptyTemplate>
<FooteTemplate>
</div>
</FooteTemplate>
</code>

il mio output in caso di mancnza di dati sarà
<code>
// HeaderTemplate
<h1>titolo</h1>
<div>
// Footer
</div>
// Empty
no data

</code>
ossia il mio EmptyTemplate è messo dopo il FooterTempalte

come rimedio a questo problema di modo che rispetti la gerarchia
Header - Empty/Item - Footer?
riscrivendo l'ordine con cui il controllo istanzia i template, ma è un lavoraccio, è quasi come riscriverlo.
molto meglio invece rende invisibile il footer ed inglobarne il codice nell'Empty

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP
come e dove rendo invisibile un Itemplate?
hai talmente tante opzioni che quella migliore devi solo sceglierla.
puoi evitare di fare il rendering di tutto il resto escluso l'EmptyTemplate, non eseguendo base.Render(), oppure incettare l'evento Item_Created del controllo e verificare, attraverso ItemType del controllo che scatena l'evento quale tipo di template è.
puoi, ancora, riscrivere tutto in modo che istanzi a mano i template, esattamente come è stato fatto per quello da visualizzare in mancanza di dati, e quindi averlo nel giusto posto, prima di footer.

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP
sto impazzendo...
come faccio a fare il render solo dell'EmptyTemplate?

<code>
protected override void Render(HtmlTextWriter output) {
// se non ci sono dati, istanzio il template
if (this.Items.Count == 0 && EmptyTemplate != null){
EmptyTemplate.InstantiateIn(this);
// qui devo fare il render solo del mio EmptyTemplate...
// COME FACCIO???
}
else
base.Render(output);

//
}

</code>
1 messaggio dal 13 febbraio 2006
Ciao,
ho dovuto affrontare lo stesso problema per un controllo DataGrid.. nel mio caso l'intera griglia doveva essere sostituita da un messaggio, ragion per cui ho risolto così:
Sulla pag. ASPX
<EmptyTemplate><P style="COLOR: red">Nessun record trovato!</P></EmptyTemplate>

Sul codice del DataGrid custom:
protected override void Render(HtmlTextWriter output) 
  {
    Control c = new Control();
    if((this.Items.Count == 0)&&(EmptyTemplate != null))
    {
      EmptyTemplate.InstantiateIn(c);
      c.RenderControl(output);
    }
    else
      base.Render(output);
  }

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.