Francesco Geri

Il blog di Francesco Geri
posts - 94, comments - 165, trackbacks - 2

venerdì 15 ottobre 2010

Forzare la visualizzazione dell’Header Row di una GridView anche se non ci sono elementi

La GridView ASP.NET di default ha un problema (fra gli altri) legato alla visualizzazione nel caso di nessun elemento presente.

Il problema è che se non ci sono elementi nasconde l’header delle colonne.

Se si vuole che l’header resti si può seguire questo post: http://www.aspitalia.com/script/829/Mostrare-Header-GridView-ASP.NET-2.0-Mancanza-Dati.aspx

 

In pratica si deve estendere la classe GridView con una classe del tipo:

Public Class MyGridView
    Inherits System.Web.UI.WebControls.GridView
 
    Protected Overrides Function CreateRow( _
          ByVal rowIndex As Integer, _
          ByVal dataSourceIndex As Integer, _
          ByVal rowType As System.Web.UI.WebControls.DataControlRowType, _
          ByVal rowState As System.Web.UI.WebControls.DataControlRowState) As System.Web.UI.WebControls.GridViewRow
 
        If (rowType = DataControlRowType.EmptyDataRow) Then
            Return MyBase.CreateRow(-1, -1, DataControlRowType.Header, DataControlRowState.Normal)
        Else
            Return MyBase.CreateRow(rowIndex, dataSourceIndex, rowType, rowState)
        End If
 
    End Function
 
End Class

La nostra gliglia personalizzata puo’ così essere inserita nella pagina, inserendo ad esempio questa direttiva in testa:

<%@ Register TagPrefix="jvpo" Namespace="TestMyGridView" Assembly="TestMyGridView, 
        Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"  %>

Quindi va dichiarato il tag EmptyDataTemplate:

<EmptyDataTemplate>Nessun elemento</EmptyDataTemplate>

 

In realtà il template per il caso di empty data non verrà mai renderizzato, in quanto verrà “sacrificato” per renderizzare l’header.

Però si potrà sostituirlo ad esempo con una label da visualizzare o nascondere a seconda dei casi.

posted @ lunedì 1 gennaio 0001 00:00 | Feedback (2) |

Powered by:
Powered By Subtext Powered By ASP.NET