2009-11-19 5 views
0

J'ai un GridView de base qui affiche une liste de tâches à faire (juste un exemple)afficher En option, un texte à la place de GridView lorsque le GridView n'a pas de lignes

<asp:GridView ID="GridView1" runat="server" DataSourceID="SqlDataSource1" AllowSorting="True" > 
    <Columns> 
     <asp:BoundField DataField="todo" HeaderText="To Do" ReadOnly="True" SortExpression="todo" /> 
     <asp:BoundField DataField="byDate" HeaderText="By When" ReadOnly="True" 

SortExpression = « Bydate » />

la source de données est spécifié dans la page ASPX et il est un jeu de résultats à partir d'une procédure stockée

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="..." 
     SelectCommand="pToDoList" SelectCommandType="StoredProcedure"> 
</asp:SqlDataSource> 

Ainsi la Pourfendre la page Ered présente des tâches sous forme de lignes de données (une ligne par tâche)

Ma question est

Lorsqu'il n'y a pas données renvoyées par la procédure stockée la page reste vide. Je voudrais avoir un texte à la place en disant par exemple: "rien à faire aujourd'hui"

Comment faire cela? Merci

Répondre

1

Ajouter une étiquette à la page, appelez-le ErrorLabel, faire quelque chose comme cela dans le cas DataBound du GridView:

protected void GridView1_DataBound(object sender, EventArgs e) 
{ 
    if(GridView1.Rows.Count <= 0) ErrorLabel.Text = "Nothing to do today"; 
    else ErrorLabel.Visible = false; 
} 

Bien qu'une recherche Google aurait sans doute obtenu pour vous.

+0

+1 Merci Matthew, je garderai cette option à l'esprit – padn

0

Une option consiste à utiliser le pied de page pour afficher ce message. Pendant le ItemDataBound, si le ItemType est le pied de page, vérifiez si le DataSource est vide et si c'est le cas, affichez le message. Ou si vous voulez travailler de manière déclarative dans l'ASPX, vous pouvez utiliser EmptyDataTemplate et y ajouter votre message.

3

il y a une propriété « EmptyDataText » qui vous permet de spécifier le texte si le gridview est vide

+0

+1 merci cela fonctionnera bien dans mon cas. J'ai accepté la suggestion de modèle car elle donne plus de flexibilité avec le formatage – padn

0

Je voudrais simplement ajouter un contrôle d'étiquette noDataLabel contenant le texte « Rien à faire aujourd'hui », et ajouter du code dans le Page_Load événement:

if (GridView1.Rows == 0) 
{ 
    GridView1.Visible = false; 
} 
else 
{ 
    noDataLabel.Visible = false; 
} 

Il est ab C'est brut, mais il a intégré C# dans votre HTML Webform. S'il n'y a pas de données et que le formulaire est rendu, GridView est simplement ignoré.

Questions connexes