如何访问数据列表中的最后一项以设置其类
本文关键字:一项 设置 最后 何访问 访问 数据 列表 | 更新日期: 2023-09-27 18:32:44
我需要为 DataList 中的每个项目创建按钮,但最后一个按钮需要以不同的格式设置,因此需要对其应用不同的 css 类。
我认为这应该在OntemDataBound方法中完成,但是如果我错了,请随时纠正我。
我想做这样的事情:
protected void dlDataList_ItemDataBound(object sender, DataListItemEventArgs e)
{
if (e.Item.ItemIndex == dlDataList.Items.Count - 1) //This doesn't work like I'd hoped
{
Panel button = (Panel)e.Item.FindControl("btnButton");
button.CssClass = ("altClass");
}
...
}
问题是,我不认为数据列表知道它在 ItemDataBound 事件中会有多少项,因为 dlDataList.Items.Count 总是与 ItemIndex 相同。
关于如何为最后一个按钮提供altClass css类的任何想法?
在绑定数据列表之前,请将项目总数保存在页面级变量中。然后在 ItemDataBound 上,检查当前索引是否等于总项目数(当然是 -1),并相应地设置 css 类
通常索引是从零开始的,因此在具有 5 个元素的列表中,最后一个元素的索引将为 4,计数为 5,因此如果您从计数中减去 1,我认为它会起作用
for (int i=0; i<= DataList1.Items.Count; i++)
{
if (e.Item[i] == dlDataList.Items.Count - 1) //This doesn't work like I'd hoped
{
Panel button = (Panel)e.Item.FindControl("btnButton");
button.CssClass = ("altClass");
}
}
> 您需要查询 DataList 的数据源而不是它的项,因为这些项是在它们被数据绑定之前创建的。
protected void dlDataList_ItemDataBound(object sender, DataListItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
// use the item's DataItem property or the DataList's DataSource property directly
DataTable tbl = ((DataRowView)e.Item.DataItem).Row.Table;
if (e.Item.ItemIndex == tbl.Rows.Count - 1)
{
// ....
}
}
}
将为
数据源中的每个对象触发 ItemDataBound 事件。因此,每次将项目添加到数据列表时,它的索引都会高出 1,而且您的计数也会高出 1,因此它们始终相等。您应该与数据列表数据源属性进行比较,并从中获取计数。数据源已预先确定列表的大小。只需将数据源强制转换为数据绑定到的对象。因此,如果它是一个List<string>
您可以使用以下内容:
if (e.Item.ItemIndex == ((List<string>)dlDataList.DataSource).Count - 1)