如何在每5行数据后添加一个div?

时间:2011-10-12 22:21:16

标签: asp.net vb.net

我正在尝试在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?

我必须以某种方式获得显示索引的总数...

2 个答案:

答案 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,对不起,如果有编译器错误)