Mostrare l'header della GridView di ASP.NET 2.0 in mancanza di dati

di Marco Leoncini, in ASP.NET 2.0, DataBinding, GridView,

Benchè il GridView offra la possibilità di visualizzare un semplice messaggio di testo o un template nel caso la fonte dati non contenga nessun elemento, non è possibile mostrare l'header delle colonne.

Il problema è risolvibile estendendo la classe GridView, eseguendo l'override del metodo CreateRow:

public class MyGridView : GridView
{
  protected override GridViewRow CreateRow(int rowIndex, int dataSourceIndex, DataControlRowType rowType, DataControlRowState rowState)
  {
    if (rowType == DataControlRowType.EmptyDataRow)
      return base.CreateRow(-1, -1, DataControlRowType.Header, DataControlRowState.Normal);
    else
      return base.CreateRow(rowIndex, dataSourceIndex, rowType, rowState);
  }
}

E dichiarando una semplice EmptyDataTemplate:

<EmptyDataTemplate>Specificare un testo.</EmptyDataTemplate>

Così facendo verrà richiamato il Metodo CreateRow, che nel nostro caso non istanzierà più i controlli contenuti nell'EmptyDataTemplate, ma restituirà una nuova riga di tipo Header.
Successivamente è sufficiente registrare la classe (che può essere anche salvata in /App_Code/), attraverso la direttiva

<%@Register %>

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi