2010-10-08 5 views
2

Je crée une page ASP.NET/C# dans laquelle un utilisateur saisit un ID en haut de la page, et quand il appuie sur Envoyer, la page affiche et affiche les données . À l'heure actuelle, les champs de données sont affichés à tout moment - même lorsque la page se charge et qu'aucune recherche n'a eu lieu. Ce n'est pas idéal car quand ils naviguent dans un menu avec un MultiView que j'ai fait, certaines erreurs vont apparaître. De plus, ce n'est évidemment pas une bonne pratique.Comment afficher les éléments uniquement si SQLDataSource a des lignes

Est-il possible de masquer tous ces éléments (ils sont DetailsViews et GridViews, ainsi que MultiView et Menu) si SQLDataSource est vide? Donc, si la recherche est retournée, ou si aucune requête n'a encore été exécutée.

Merci

Répondre

2

Vous pouvez entourer ces éléments est un contrôle d'espace réservé, puis définir la visibilité des espaces réservés selon que il y a résultat à afficher.
Je n'ai pas encore utilisé l'objet SqlDataSource mais pour répondre à vos besoins, je suggère de vérifier si la page a été publiée dans la méthode PageLoad et si elle ne masque pas les contrôles de données. Ensuite, pour traiter le cas d'aucun résultat d'être renvoyé l'ajout d'une méthode à l'événement SqlDataSource.Selected:
ASPX:

<asp:PlaceHolder ID="myPlaceholder" runat="server"> 
    ....Data controlds 
</asp:PlaceHolder> 

code derrière:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if(!isPostBack) 
    {  
     myPlaceholder.Visible = false; 
    } 
} 

protected void SqlDataSource1_Selected(object sender, SqlDataSourceStatusEventArgs e) 
{ 
    myPlaceholder.Visible = e.AffectedRows > 0; 
} 
+0

ami Cheers, il est ne pas me laisser utiliser le paramètre de longueur sur SqlDataSource1. En outre, le code derrière aller dans la méthode Page_Load? – Chris

+0

@Chris - pas beaucoup utilisé l'objet SqlDataSource mais les modifications que j'ai faites devraient vous permettre d'avancer. –

1
If GridView1.Rows.Count > 0 // then do stuff 
0
DataView dv = (DataView)SqlDSourse.Select(DataSourceSelectArguments.Empty); 

if(dv.count>0) 

    { 
    ... 
    } 
Questions connexes