2009-09-25 9 views
4

est-il un moyen facile de style le dernier élément dans un contrôle ListView? Fondamentalement besoin d'ajouter une classe.Styling dernier élément dans un ListView

Vive

+0

Est-ce que listview ne contrôle pas un formulaire Windows? – rahul

+0

Le nombre d'enfants est-il toujours le même et connu? –

Répondre

3

Il est

:last-child

classe pesudo.

Mais ne fonctionnera pas dans tous les navigateurs. Le meilleur moyen est d'ajouter une classe CSS au dernier élément de la liste et de le styler.

Si vous pouvez utiliser jQuery, vous pouvez utiliser le

:last-child

sélecteur

0

réponse de Phoenix ne répond pas vraiment à la question, Phoenix suggère styling le dernier élément avec une classe CSS différente, mais comment savez-vous quel est le dernier objet? ListView a no LastItemTemplate.

Vous pouvez utiliser <% # Container.DisplayIndex%> pour obtenir votre position dans la liste actuelle. Vous pouvez utiliser Items.Count sur le contrôle pour obtenir le total, mais en combinant ces deux choses est légèrement au-delà de mes compétences ASP.NET.

3

Les virgules séparent une liste de noms de clients. Le dernier nom du client se terminera par un point.

Un client, B Client, C.

<asp:ListView ID="lvCustomers" runat="server"> 
    <LayoutTemplate> 
    <div id="itemPlaceHolder" runat="server"></div> 
    </LayoutTemplate> 
    <ItemTemplate> 
    <%# Eval("CustomerName")<%# Container.DisplayIndex == (Container.BindingContainer.As<ListView>().DataSource.As<System.Collections.Generic.List<String>>().Count - 1) ? "." : ", " %> 
    </ItemTemplate> 
</asp:ListView> 

Il utilise une méthode d'extension 'As':

/// <summary> 
/// Returns this object casted as a different type. 
/// </summary> 
/// <typeparam name="T">A type</typeparam> 
/// <param name="obj">An object</param> 
/// <returns>A boolean value.</returns> 
public static T As<T>(this object obj) where T : class 
{ 
    if (obj == null) return null; 

    return obj as T; 
} 
1

que je fais ce genre de choses dans le cas listview ItemDataBound. Mais pour cela, j'ai besoin de savoir quel serait le type de DataSource.

Par exemple:

protected void LvFilters_ItemDataBound(object sender, ListViewItemEventArgs e) 
{ 
    if (e.Item.ItemType == ListViewItemType.DataItem) 
    { 
     ListViewDataItem item = e.Item as ListViewDataItem; 
     if(item.DataItemIndex == ((YourDataSourceType)lvFilters.DataSource).Count - 1) 
      e.Item.FindControl("Control's id here").Visible = false; // or whatever you wanna do about styling 
    } 
} 
3

Je l'ai travaillé comme

<%#(Container.DataItemIndex == dataList.Count - 1 ? "last" : "")%> 

où datalist est la construction de la classe de données personnalisée dans le code derrière et binded à listview.

Questions connexes