我有一个列表视图如下:
<asp:ListView ID="lstTopRanks" runat="server"> <ItemTemplate> <div class="Amazing-{recordNumber}">{itemdata}</div> </ItemTemplate> </asp:ListView>
我想用一个正在运行的计数器替换{recordNumber},所以显示的第一条记录为1,第二条记录为2,依此类推.
我怎样才能做到这一点?
提前致谢
解决方法
@H_301_13@ 如果ID不是来自例如数据库,则可以使用Container.DisplayIndex或Container.DataItemIndex来执行此操作.关键是:class =“Amazing-<%#Container.DisplayIndex 1%>”.
如果recordNumber确实来自外部数据源,您可以这样做:class =’Amazing-<%#Eval(“YourDatabaseIDColumn”)%>‘.
如果要分页数据源,DisplayIndex和DataItemIndex会有所不同. DisplayIndex是一个始终在当前页面上开始的运行索引,DataItemIndex是整个数据源中的运行数字.
这是一个例子:
代码隐藏:
//just to represent something like a db table with an ID and a description Pair[] data = new Pair[] { new Pair(123,"row1"),new Pair(124,"row2"),new Pair(125,"row3"),new Pair(126,"row4"),new Pair(127,"row5"),new Pair(128,"row6"),new Pair(129,"row7"),new Pair(130,"row8"),new Pair(131,"row9"),new Pair(132,"row10") }; lstTopRanks.DataSource = data; lstTopRanks.DataBind();
ASPX:
<asp:ListView ID="lstTopRanks" runat="server"> <LayoutTemplate><asp:PlaceHolder ID="ItemPlaceHolder" runat="server"></asp:PlaceHolder></LayoutTemplate> <ItemTemplate> <div class="Amazing-<%#Container.DisplayIndex + 1 %>"> DisplayIndex: <b><%#Container.DisplayIndex %></b>; DataItemIndex: <b><%#Container.DataItemIndex %></b>,ID and Text: <i><%#((Pair)Container.DataItem).First %>,<%#((Pair)Container.DataItem).Second %></i> </div> </ItemTemplate> </asp:ListView> <asp:DataPager ID="DataPagerProducts" runat="server" PagedControlID="lstTopRanks" PageSize="3" > <Fields> <asp:NextPrevIoUsPagerField ShowFirstPageButton="True" ShowNextPageButton="False" /> <asp:NumericPagerField /> <asp:NextPrevIoUsPagerField ShowLastPageButton="True" ShowPrevIoUsPageButton="False" /> </Fields> </asp:DataPager>
结果如下: