2010-08-05 6 views

Répondre

0

Les options comprennent:

  • Si vous parlez cacher un élément entier dans la liste ... La rédaction de votre requête de sorte que ces articles sont filtrés lorsque vous obtenez la liste que votre ListView est lié. (par exemple ajouter une clause WHERE à l'instruction SELECT si celles-ci proviennent de la base de données.)
  • Si vous parlez de contrôles spécifiques dans un ItemTemplate dans vos ListViews, vous pouvez définir le paramètre "Visible = false" là où vous vous trouvez. Je le veux caché.

comme ceci:

<ItemTemplate> 
    <asp:Button Runat = "Server" visible="<%# Eval(SomeCondition) %>" Text = "Click Me" /> 
</ItemTemplate> 
1

Il n'y a aucun moyen de "cacher". Vous devrez supprimer, puis ajouter lorsque vous souhaitez que l'élément soit à nouveau visible.

+1

Pas vrai ... Vous pouvez définir Visible = False sur la éléments dans le ListView en fonction des critères. – David

+0

@David Je pense qu'il veut dire cacher des éléments de manière dynamique, non pas en fonction de critères, mais en fonction des événements. Autrement dit, il veut être capable de faire ceci: this.listView1.Items [0] .Visible = false; Ce qu'il ne peut pas faire. –

+0

Si c'est le cas, cela peut être fait dans l'événement ItemCommand. (http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listview.itemcommand.aspx) Presque tous les contrôles visibles configurés pour s'exécuter sur le serveur (via Runat = "Serveur"). tag) peut avoir la visibilité définie sur false. Je le ferais probablement avec la commande "Select". – David

0

Si vos éléments de liste sont renseignés de manière dynamique, je vérifierais pour la condition, puis le hasard le DataSourceID, ou la requête que la source de données utilise et

MyListView.DataBind(); 

Sinon, si elle n'est pas rempli dynamiquement, vous pouvez définir les éléments ListItems en tant que membres statiques de cette page, puis vérifier votre condition et supprimer les éléments que vous souhaitez "masquer" avant d'ajouter la collection ListItems à ListView.

0

Je viens de trouver une solution pour résoudre ce problème, en utilisant ItemsContainerStyle:

<ListView.ItemContainerStyle> 
    <Style TargetType="ListViewItem"> 
     <Setter Property="Visibility" Value="{Binding propertyName, Converter={StaticResource ITVConverter}}"/> 
    </Style> 
</ListView.ItemContainerStyle>