Sur la base des réponses déjà, GridView.Rows.Count
ne suffit pas à elle seule, selon la nature de votre GridView
, surtout si elle est un gv dynamique, qui, dans la plupart des cas il est, plus vous devez prendre en compte Paginating
, en-têtes et pieds de page, qui modifient le nombre de lignes. J'utilise une méthode simple pour me dire ...
//checks if a gridview has any actual rows of data (not just blank rows filled in by the Load
protected bool gvNoData(GridView gv)
{
int wsDataRow = 0;
foreach (GridViewRow gvRow in gv.Rows)
if (gvRow.RowType == DataControlRowType.DataRow)
{
HiddenField hf = (HiddenField)gvRow.FindControl("hfStudentID");
if (hf != null)
if (hf.Value.ToString().Length > 0)
wsDataRow +=1;
}
//if a count was generated then there are data rows, otherwise the rows are blank or nonexistant
if (wsDataRow > 0) return false;
else return true;
}
Il faut donc lancer quelque chose comme ça vous dira si les lignes sont vraiment " « lignes DATA », ou vide ou rien!
Il est évident que dans mon cas, j'ai HiddenField de me dire si le GridViewRow est une ligne de données réelles, comme je l'ai déjà remplis mon gridview avec des lignes vides (pour mes besoins) et quelques lignes de données.
Cependant, une version plus simple de vérifier basée sur DataRow vs HeaderRow, etc ...
foreach (GridViewRow gvRow in myGridView.Rows)
if (gvRow.RowType == DataControlRowType.DataRow)
{
//do what you need
}
J'espère que cela aide. En bref, il n'y a malheureusement pas de fonction GridView.IsEmpty(), à moins d'en énumérer une comme indiqué ci-dessous.
+1 -le EmptyDataTemplate est la solution la plus élégante IMHO –
+1 Vous pouvez également utiliser la propriété EmptyDataText –