<asp:Repeater>
让我发疯..
我需要做
<ItemTemplate>
<% if (Container.DataItem("property") == "test") {%>
I show this HTML
<% } else { %>
I show this other HTML
<% } %>
</ItemTemplate>
但我无法为我的生活找到任何方法来实现这一目标。三元不是很好,因为HTML的数量非常大,通过DataBind事件设置标签也不是很好,因为我必须在代码隐藏中拥有大块的HTML。
当然有办法做到这一点......
答案 0 :(得分:20)
您可以使用服务器端可见性:
<ItemTemplate>
<div runat="server" visible='<% (Container.DataItem("property") == "test") %>'>
I show this HTML
</div>
<div runat="server" visible='<% (Container.DataItem("property") != "test") %>'>
I show this other HTML
</div>
</ItemTemplate>
答案 1 :(得分:7)
您可以尝试创建一种ViewModel类,对代码隐藏做出决定,然后对转发器感到满意,只需显示正在提供的数据。
这是一种将逻辑与UI分开的方法。然后,您可以使用一个简单的UI来显示数据,而无需决定显示什么/如何显示。
答案 2 :(得分:3)
您可以使用用户控件执行此操作:
<ItemTemplate>
<uc:Content1 runat='server' id='content1' visible='<%# Container.DataItem("property") == "test" %>'/>
<uc:Content2 runat='server' id='content2' visible='<%# Container.DataItem("property") != "test" %>'/>
</ItemTemplate>
答案 3 :(得分:3)
看起来我把这与实际的数据绑定混淆了
<击> 你可以这样做:
<asp:Repeater runat="server">
<ItemTemplate>
<% if (((Product)Container.DataItem).Enabled) { %>
buy it now!
<% } else {%>
come back later!
<% } %>
</ItemTemplate>
</asp:Repeater>
击> <击> 撞击>
答案 4 :(得分:0)
我遇到了类似的问题,偶然发现了这个页面。感谢你们给出了很好的答案,Gavin和Keltex让我走上了正确的道路,但是我在我的页面上工作时有点棘手。最终我能够使用这个布尔值,所以我想分享后代:
显示复选框,如果错误
<asp:CheckBox ID="chk_FollowUp" Visible='<%# (DataBinder.Eval(Container.DataItem, "FollowUp").ToString() == "False") %>' runat="server" />
显示标志img如果为真
<asp:Image ID="img_FollowUp" AlternateText="Flagged" ImageUrl="Images/flag.gif" runat="server"
Visible='<%# DataBinder.Eval(Container.DataItem, "FollowUp") %>' Height="30" Width="30" />
答案 5 :(得分:0)
首先,你必须在Page.cs文件中定义一个Count变量
<%if (Count == 0)
{
%>
<div style="background-color:#cfe9ed" class="wid_100 left special_text"><%# Eval("CompanyName") %></div>
<%}
else if (Count == TotalCount - 1)
{
%>
<div style="background-color:#f2f1aa" class="wid_100 left special_text"><%# Eval("CompanyName") %></div>
<%}
else
{
%>
<div class="wid_100 left special_text"><%# Eval("CompanyName") %></div><% } %>
<%Count++; %>