Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.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# 带IF-Else语句的中继器控件在aspx页面中始终返回true或false_C#_Asp.net_Webforms_Repeater - Fatal编程技术网

C# 带IF-Else语句的中继器控件在aspx页面中始终返回true或false

C# 带IF-Else语句的中继器控件在aspx页面中始终返回true或false,c#,asp.net,webforms,repeater,C#,Asp.net,Webforms,Repeater,我需要基于Container.ItemIndex%2==0条件显示HTML 但对我来说,它总是根据代码中的编码返回true或false <asp:Repeater ID="rptNews" runat="server" EnableViewState="False" OnItemDataBound="rptNews_ItemDataBound"> <ItemTemplate> <div style="display:none;"><%#

我需要基于
Container.ItemIndex%2==0
条件显示HTML

但对我来说,它总是根据代码中的编码返回true或false

<asp:Repeater ID="rptNews" runat="server" EnableViewState="False" OnItemDataBound="rptNews_ItemDataBound">
   <ItemTemplate>
      <div style="display:none;"><%# _repeaterIndex = Container.ItemIndex %></div>
      <% if (_repeaterIndex % 2 == 0)  
         {%>
      <div class="col-md-4 col-lg-3 col-sm-6 no-padding newslist-col">
         <div class="blog-item style-3">
            <div class="blog-image">
               <img alt="image" class="img-responsive center-block" src='<%# Eval("Image") %>' />
            </div>
            <div class="blog-content">
               <div class="text-center">
                  <h5 class="date"><%# getDate(Eval("Date")) %></h5>
                  <h3 class="title-news blog-title newslisttitle"><%# Eval("Heading") %></h3>
                  <a href='<%# getURL(Eval("ID")) %>'><strong> MORE </span></strong></a>
               </div>
            </div>
         </div>
      </div>
      <%  }
         else
         { %>
      <div class="col-md-4 col-lg-3 col-sm-6 no-padding newslist-col">
         <div class="blog-item style-3">
            <div class="blog-content content-top">
               <div class="text-center">
                  <h5 class="date"><%# Eval("Date") %></h5>
                  <h3 class="title-news blog-title newslisttitle"><%# _repeaterIndex %> <%# Eval("Heading") %></h3>
                  <a href='<%# getURL(Eval("ID"),Eval("Heading")) %>'><strong> MORE </strong></a>
               </div>
            </div>
            <div class="blog-image">
               <img alt="image" class="img-responsive center-block" src='<%# Eval("Image") %>' />
            </div>
         </div>
      </div>
      <% } %>
   </ItemTemplate>
</asp:Repeater>
到目前为止,我已经尝试了几种方法,但是如果(_repeaterIndex%2==0),它就不能正常工作根据总行数,这始终为真或假,因为在我的情况下,它始终显示
13
,因为我有13条记录,如果我为测试显示
\u repeaterIndex
,它将显示正确的值,但如果它始终取
容器的最终值。ItemIndex
不是当前值


解决我面临的这个问题的最佳方法是直接使用
Container.ItemIndex
,而不是使用
ItemDataBound
事件。您可以通过使用两个占位符并基于ItemIndex的值设置它们的可见性来实现这一点

<ItemTemplate>
    <asp:PlaceHolder ID="PlaceHolder1" runat="server" Visible='<%# Container.ItemIndex % 2 == 0 %>'>

        Even content<br />

    </asp:PlaceHolder>
    <asp:PlaceHolder ID="PlaceHolder2" runat="server" Visible='<%# Container.ItemIndex % 2 == 1 %>'>

        Odd content<br />

    </asp:PlaceHolder>
</ItemTemplate>

偶数内容
奇数内容

在花费数小时试图找到解决此问题的其他方法后,我最终使用了两个面板,并根据代码隐藏中的
e.Item.ItemIndex%2==0
值隐藏和显示。我认为这是最有效的方法

<asp:Repeater ID="rptNewsList" runat="server" EnableViewState="False" OnItemDataBound="rptNewsList_ItemDataBound">
<ItemTemplate>

     ***HTML WILL GO HERE   

<asp:Panel runat="server" ID="PanelTopImage" CssClass="col-md-4 col-lg-3 col-sm-6 no-padding newslist-col">

 </asp:Panel>

<asp:Panel runat="server" ID="PanelBottomImage" CssClass="col-md-4 col-lg-3 col-sm-6 no-padding newslist-col">

   ***HTML WILL GO HERE  

</asp:Panel>

</ItemTemplate>
</asp:Repeater>

我昨天使用类似的解决方案解决了这个问题,而不是使用
rptNewsList\u ItemDataBound
隐藏和显示控件,而您的方法也很酷
<asp:Repeater ID="rptNewsList" runat="server" EnableViewState="False" OnItemDataBound="rptNewsList_ItemDataBound">
<ItemTemplate>

     ***HTML WILL GO HERE   

<asp:Panel runat="server" ID="PanelTopImage" CssClass="col-md-4 col-lg-3 col-sm-6 no-padding newslist-col">

 </asp:Panel>

<asp:Panel runat="server" ID="PanelBottomImage" CssClass="col-md-4 col-lg-3 col-sm-6 no-padding newslist-col">

   ***HTML WILL GO HERE  

</asp:Panel>

</ItemTemplate>
</asp:Repeater>
protected void rptNewsList_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {

            Panel pnlTopImage = e.Item.FindControl("PanelTopImage") as Panel;
            Panel pnlBottomImage = e.Item.FindControl("PanelBottomImage") as Panel;

            if (e.Item.ItemIndex % 2 == 0)
            {

                pnlTopImage.Visible = true;
                pnlBottomImage.Visible = false;
            }
            else
            {
                pnlTopImage.Visible = false;
                pnlBottomImage.Visible = true;
            }
        }


    }