Viv*_*ndi 10 c# asp.net repeater itemtemplate
我正在使用ASP.NET Repeater来显示一个内容<table>.它看起来像这样:
<table cellpadding="0" cellspacing="0">
<asp:Repeater ID="checkboxList" runat="server" OnItemDataBound="OnCheckboxListItemBound">
<ItemTemplate>
<tr id="itemRow" runat="server">
<td>
Some data
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
</table>
Run Code Online (Sandbox Code Playgroud)
它工作正常,但我想if()在里面有一个声明,ItemTemplate所以我可以有条件地确定我是否要打印出一个<tr>标签.
所以我想要这样的东西:
<table cellpadding="0" cellspacing="0">
<asp:Repeater ID="checkboxList" runat="server" OnItemDataBound="OnCheckboxListItemBound">
<ItemTemplate>
<% if ( (CurrentItemCount % 2) == 0 ) { %?>
<tr id="itemRow" runat="server">
<% } %>
<td>
Some data
</td>
<% if ( (CurrentItemCount % 2) == 0 ) { %?>
</tr>
<% } %>
</ItemTemplate>
</asp:Repeater>
</table>
Run Code Online (Sandbox Code Playgroud)
有什么办法可以达到这个目的吗?
PS.在CurrentItemCount刚刚组成.我还需要一种方法来获取该if()语句中的当前项目计数.但我似乎只能从中得到它<%# Container.ItemIndex; %>,这不能与if()声明一起使用?
mae*_*ets 18
另一种方法(如果性能不是问题):
<ItemTemplate>
<!-- "If" -->
<asp:PlaceHolder runat="server" Visible="<%# MyCondition %>">
<tr><td></td></tr>
</asp:PlaceHolder>
<!-- "Else" -->
<asp:PlaceHolder runat="server" Visible="<%# !MyCondition %>">
<tr><td></td></tr>
</asp:PlaceHolder>
</ItemTemplate>
Run Code Online (Sandbox Code Playgroud)
Cla*_*edi 16
如果你正在尝试制作一个2列表,这可以解决问题
<%# Container.ItemIndex % 2 == 0 ? "<tr class='itemRow'>" : "" %>
<td>
Some data
</td>
<%# Container.ItemIndex % 2 != 0 ? "</tr> : "" %>
Run Code Online (Sandbox Code Playgroud)
改变了一些事情:id="itemRow"因为所有行都会导致重复的id不允许.
删除runat="server"因为在这种情况下没有意义.
Tim*_*ter -1
我会使用代码隐藏:
protected void OnCheckboxListItemBound(Object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
HtmlTableRow itemRow = (HtmlTableRow) e.Item.FindControl("itemRow");
itemRow.Visible = e.Item.ItemIndex % 2 == 0;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
36893 次 |
| 最近记录: |