Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/41.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
如何在<;项目模板>;(.NET)?_.net_Css_Repeater_Modulo_Itemtemplate - Fatal编程技术网

如何在<;项目模板>;(.NET)?

如何在<;项目模板>;(.NET)?,.net,css,repeater,modulo,itemtemplate,.net,Css,Repeater,Modulo,Itemtemplate,我正在为这个网站使用EPiServer。与asp:DataList不同,epserver:PAgeList没有AlternatingItemTemplate 所以我需要创建一个计数器并在我的中增加这个计数器,然后使用模数返回要附加到文章/页面的css样式 模数“代码”-源代码隐藏: return index % 2 == 0 ? "styleA" : "styleB"; protected Int32 ItemIndex; 但是我不能在中添加一个计数器并增加这个值 非常感谢您的任何建议 更

我正在为这个网站使用EPiServer。与
asp:DataList
不同,epserver:PAgeList没有
AlternatingItemTemplate

所以我需要创建一个计数器并在我的
中增加这个计数器,然后使用模数返回要附加到文章/页面的css样式

模数“代码”-源代码隐藏:

 return index % 2 == 0 ? "styleA" : "styleB";
protected Int32 ItemIndex;
但是我不能在
中添加一个计数器并增加这个值

非常感谢您的任何建议

更新
这是我的EPiServer页面列表控制器:

 <EPiServer:PageList runat="server" id="pageList" SortDirection="Ascending" Count="4" OnDataBinding="pageList_OnDataBinding">
    <HeaderTemplate>
        <ul id="articleList1">
    </HeaderTemplate>

    <ItemTemplate>
            <li>
                   <h2><a href="<%# Eval("LinkURL") %>" title="<%# Eval("PageName") %>"><EPiServer:Property id="Property1" PropertyName="PageName" runat="server" /></a></h2>
                   <div class="articleImage">
                      <%# ArticleImage(Container.CurrentPage)%>                            
                   </div>
                   <div class="introText">
                      <%# IntroText(Container.CurrentPage)%> 
                   </div>
                   <div class="readMore floatRight"><a href="<%# Eval("LinkURL") %>" title="<%# Eval("PageName") %>">Les mer</a></div>
            </li>
    </ItemTemplate>

    <FooterTemplate>
        </ul>     
    </FooterTemplate>
 </EPiServer:PageList> 

当我在服务器控件中遇到此类问题时,我通常只是手动将其css化

如果您所要寻找的只是一些用于替换行的视觉样式,那么在客户端上使用Javascript和jQuery在运行时操纵样式可能会更成功。在某些情况下,您可以使用纯CSS获得所需的结果(但这可能会导致在不同浏览器中的实现看起来不一样)

如果确实需要为交替行呈现不同的信息,则可能需要向要绑定的数据源添加一个属性,以公开信息。或者,某些控件支持
ItemDataBound
事件,您可以在服务器上订阅该事件,并使用该事件更改输出

编辑:

如果您选择订阅ItemDatabound事件(假设您的控件实际具有此功能),您将计算一个递增值并将其分配给要绑定的数据项。然后,您可以将其与模运算结合使用:
(计数%2)
为奇偶行应用不同的样式

另一种方法是通过在ASP.NET中使用标记扩展生成一个仅在标记中递增的数字来进行攻击。下面是一个带有中继器的示例:

<asp:Repeater runat='server' id='whatever'>
    <HeaderTemplate>
        <% int counter = 0; %>
    </HeaderTemplate>
    <ItemTemplate>
         <li class='<%= (counter++) % 2 ? "regularStyle" : "alternateStyle"'>
           ... content here ...
         </li>
    </ItemTemplate>
</asp:Repeater>

  • 编辑给你。。。OOPS必须是HtmlTableRow

    HtmlTableRow row = e.Item.FindControl("row") as HtmlTableRow;
    if (row != null) 
      row.Attributes.Add("class", ((counter % 2 == 0) ? "odd": "even") );
    
    你也需要这个

    <tr id="row" runat="server" ...
    

    EPiServer PageList控件也可以用作数据源,因此没有理由不能使用您最喜欢的ASP.NET模板控件和交替项来呈现它,而只需将数据源ID设置为PageList的ID。

    不幸的是,EPiServer“隐藏”容器实例的ItemIndex,但解决方法是创建自己的“全局”计数器:

    将属性添加到代码隐藏中:

     return index % 2 == 0 ? "styleA" : "styleB";
    
    protected Int32 ItemIndex;
    
    然后在您的aspx文件中:

    <EPiServer:PageList runat="server">
        <HeaderTemplate>
            <% this.ItemIndex = 0; %>
        </HeaderTemplate>
    
        <ItemTemplate>
             <li class="<%# this.ItemIndex++ % 2 == 0 ? "odd" : "even" %>">
               Content
             </li>
        </ItemTemplate>
    </EPiServer:PageList>
    
    
    
  • 内容
  • 这对我很有效。(贷记@Rippo)

    我刚刚使用了表中的
    bgcolor

    bgcolor ='<%#(Container.ItemIndex % 2 == 0) ? "#FFFFFF" : "#FEFFE8" %>'
    
    bgcolor=''
    
    我实现了它,如下所示:

    class="<%# Container.ItemIndex % 2 == 0 ? "" : "your-alternate-css-class" %>"
    
    这样做的好处是完全基于用户界面代码(ascx) 或aspx文件),并且不依赖JavaScript


    这救了我一天

    如果支持的浏览器是IE9+,那么这可以通过纯CSS实现

    tr:nth-child(even) {
        background-color: #000000;
    }
    

    我的容器没有ItemIndex:(这真的很甜蜜和简单。我从来没有想到过。@chris-是的,它很酷,省去了一个替换template@steven-看起来像是onitem databound或JQueryTanks。能帮我朝着正确的方向找到控件吗?我不是.NET高手:(我试图避免使用jQuery来完成这项特定任务。我已经考虑过
    OnItemDataBound
    。但是我该如何处理计数器?我希望它是这么简单:`CS0103:名称'counter'在当前上下文中不存在`这是不可能的,因为您只有一个类用于该项。没有其他类的方法。谢谢感谢所有优秀的反馈人员。这将在其他情况下对我有所帮助!没错。但是我将无法访问controll-properties中的不同epserver属性,而标准ASP控制器没有这些属性。
    tr:nth-child(even) {
        background-color: #000000;
    }