有没有简单的方法来设置ListView控件中的最后一项?基本上需要附加一个类。
干杯
答案 0 :(得分:3)
有
pesudo class。
但不适用于所有浏览器。
最好的方法是将css类添加到listview中的最后一项并设置样式。
如果你可以使用jQuery,那么你可以使用
选择
答案 1 :(得分:3)
逗号分隔客户名称列表。最后一个客户名称将以点结尾。
客户A,客户B,客户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>
这使用扩展方法'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;
}
答案 2 :(得分:3)
我的工作是
<%#(Container.DataItemIndex == dataList.Count - 1 ? "last" : "")%>
其中datalist是后台代码中的自定义数据类构建,并绑定到listview。
答案 3 :(得分:1)
我在ItemDataBound listview事件中执行此类操作。 但为了这个目的,我需要知道DataSource的类型是什么。
例如:
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
}
}
答案 4 :(得分:0)
凤凰的回答并没有真正回答这个问题,凤凰建议使用不同的css类来设置最后一个项目,但是你怎么知道哪个项目是最后一项呢? ListView有 没有LastItemTemplate。
您可以使用&lt;%#Container.DisplayIndex%&gt;获得您在当前列表中的位置。您可以在Control上使用Items.Count来获取总数,但稍微合并这两项内容 超出我的ASP.NET技能。