我正在尝试在Listview中的一组5行数据之后添加div。
我想出了使用Mod 5 = 0,但如果总行数不能除以5,我意识到最后一行丢失了。
例如,我有11行数据。 “Div”将在5和10之后添加。
我还需要在11之后添加“Div”。 (div将显示每个组的详细信息)
所以,像这样
1 | 2 | 3 | 4 | 5
DIV1
6 | 7 | 8 | 9 | 10
DIV2
11 |
Div3(缺失)
这是我到目前为止的内联代码
<%# IIf((Container.DisplayIndex + 6) Mod 5 = 0, "<div id='temp" + Math.Floor((Container.DisplayIndex + 6) / 5).ToString + "' style='display:none'></div>", "")%>
当总数#不能除以5时,如何添加最后一个div?
我必须以某种方式获得显示索引的总数...
答案 0 :(得分:2)
您可以将它与ListView.Items.Count属性进行比较。
这应该有效:
Dim addDiv = (Container.DisplayIndex Mod 5 = 0) OrElse _
(Container.DisplayIndex + 1 = ListView1.Items.Count)
如果您使用的是传呼,则应使用DataItemIndex代替DisplayIndex。
修改 :(根据您的上次评论)
如果您需要显示总记录数,则必须将ListView's DataSource强制转换为正确的类型(例如,DataTable)。
Dim tbl as DataTable = DirectCast(ListView1.DataSource, DataTable)
Dim totalCount as Int32 = tbl.Rows.Count
或一行:
DirectCast(ListView1.DataSource, DataTable).Rows.Count
但这仅适用于数据绑定,而不适用于每个回发,因为DataSource将在Page-Lifecycle的末尾处理。
答案 1 :(得分:1)
“+ 6”让你看起来像猜测模数函数是如何工作的那样:)
试试这个:
<%# IIf(Container.DisplayIndex Mod 5 = 4 Or Container.DisplayIndex = ListView.Items.Count , "<div id='temp" + (1+Math.Floor(Container.DisplayIndex/5)).ToString + "' style='display:none'></div>", "")%>
所以首先(index + 6)%5 == 0与索引%5 == 4相同,
二楼((指数+6)/ 5)当指数= 4时导致2,这不是你想要的。 使用1 + floor(index / 5)会给你正确的结果---如果你想让索引从0开始,你甚至可以删除“1+”。
(p.s。我不知道asp.net,对不起,如果有编译器错误)