C# ASP.NET中继器交替行高亮显示而不完全显示<;alternatingitemtemplate/>;
我试图简单地将css类添加到我的C# ASP.NET中继器交替行高亮显示而不完全显示<;alternatingitemtemplate/>;,c#,asp.net,data-binding,extension-methods,repeater,C#,Asp.net,Data Binding,Extension Methods,Repeater,我试图简单地将css类添加到我的中的备用行上的div中,而不需要包括一个完整的的开销,我很想使用它,但这对我来说仍然没有“味道” 还有其他人有更容易维护和更直接的解决方案吗?理想情况下,我希望能够做到以下几点: <asp:repeater id="repeaterOptions" runat="server"> <headertemplate> <div class="divtable">
中的备用行上的div中,而不需要包括一个完整的的开销,我很想使用它,但这对我来说仍然没有“味道”
还有其他人有更容易维护和更直接的解决方案吗?理想情况下,我希望能够做到以下几点:
<asp:repeater id="repeaterOptions" runat="server">
<headertemplate>
<div class="divtable">
<h2>Other Options</h2>
</headertemplate>
<itemtemplate>
<div class="item <%# IsAlternatingRow ? "dark" : "light" %>">
<%# Container.ItemIndex % 2 == 0 ? "<tr>" : "<tr class='odd'>" %>
其他选择
但我不知道如何实现IsAlternatingRow,即使使用扩展方法也是如此。不需要管理自己的变量(递增计数器或布尔值);您可以查看内置属性是否可被2整除,并使用该属性设置css类:
class="<%# Container.ItemIndex % 2 == 0 ? "" : "alternate" %>"
class=“”
这样做的好处是完全基于用户界面代码(ascx或aspx文件),不依赖JavaScript。IsAlternatingRow可以是受保护的属性,并将在ItemDataBound或ItemCreated事件中设置
protected void rpt_ItemDataBound(object sender, EventArgs e)
{
IsAlternatingRow = !IsAlternatingRow;
}
使用JQuery应用这些类
$('.divtable > div:odd').addClass('dark');
$('.divtable > div:even').addClass('light');
您可以改用jQuery。以上问题的答案可能会有所帮助:C#
class=“”
VB
class=“”
小小的调整:空类可以通过以下方式删除:
<asp:repeater id="repeaterOptions" runat="server">
<headertemplate>
<div class="divtable">
<h2>Other Options</h2>
</headertemplate>
<itemtemplate>
<div class="item <%# IsAlternatingRow ? "dark" : "light" %>">
<%# Container.ItemIndex % 2 == 0 ? "<tr>" : "<tr class='odd'>" %>
这对我很有帮助
class='<%# Container.ItemIndex % 2 == 0 ? "" : "alternate" %>'
class=''
前面的回答导致“服务器标记格式不正确”错误。不需要代码。下面是一个纯CSS解决方案:
.item:nth-child(odd){background-color: #ccc}
.item:nth-child(){background-color: #ddd}
这取决于浏览器中是否启用了JavaScript,这是一个不必要的限制。这取决于JavaScript不可用时需要使用的功能。在这种情况下,站点仍然可以工作,但是表格的可读性会降低,我觉得这是可以接受的。这一点很好,尽管我的一般方法是只在需要JavaScript的事情上使用JavaScript,或者在没有JavaScript的情况下实现这些事情会非常繁重。在这种情况下,在没有JavaScript的情况下实现表条带化是很简单的,因此我推荐使用它!显然,您可以像前面提到的其他一些答案一样使用JS,但您说这是一个不必要的限制,这是正确的。@Richard Ev:如果有人使用ItemTemplate和AlternatingItemTemplate而不是此解决方案,代码会运行得更慢还是更快?我如何比较这两个相同代码的速度?@Răzvan:不确定性能差异,尽管我警告不要过早地优化类似的代码。对于仍然到达此目的地的代码,您需要用单引号将服务器端逻辑块括起来。否则,您可能会收到一条警告/错误,关于文字控件不允许加入聚会,但正如其他人所说的,答案很好!在将服务器端解析为HTML属性时,无需重新设计Wheels。这是正确的形式。