Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET中继器交替行高亮显示而不完全显示<;alternatingitemtemplate/>;_C#_Asp.net_Data Binding_Extension Methods_Repeater - Fatal编程技术网

C# ASP.NET中继器交替行高亮显示而不完全显示<;alternatingitemtemplate/>;

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">

我试图简单地将css类添加到我的
中的备用行上的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。这是正确的形式。