C#Repeater - 每隔3个项目显示AlternatingItem模板

时间:2016-03-11 14:48:45

标签: c# asp.net .net

我的转发器设置工作正常,但我需要对每个第三项进行一些调整。我的代码在下面

   <asp:Repeater ID="rptItems" runat="server" onitemdatabound="rptItems_ItemDataBound">
        <ItemTemplate>
            content / html / eval
        </ItemTemplate>
        <AlternatingItemTemplate>
            content / html / eval
        </AlternatingItemTemplate>
    </asp:Repeater>

然后在我的onitemdatabound设置

   protected void rptItems_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        // check to see if this is the page to show the form on
        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {
            if (e.Item.ItemType == ListItemType.AlternatingItem)
            {
                e.Item.Visible = ((e.Item.Parent as Repeater).Items.Count % 3 == 0);
            }
        }


    }

但这似乎不起作用,只是隐藏其中一项,任何帮助都会很棒。

2 个答案:

答案 0 :(得分:0)

您需要使用项目索引而不是计数。 Count是静态值。

可能是这样的:

 e.Item.Visible = (e.Item.Index % 3 == 0);

答案 1 :(得分:0)

使用RepeaterItem.ItemIndex代替Items.Count

e.Item.ItemIndex % 3 == 0

这样:

e.Item.Visible = e.Item.ItemType == ListItemType.AlternatingItem &&                       
                                    e.Item.ItemIndex % 3 == 0

read more on MSDN

删除备用项目以对每个第3项进行修改。

 <asp:Repeater ID="rptItems" runat="server" onitemdatabound="rptItems_ItemDataBound">
        <ItemTemplate>
            content / html / eval
        </ItemTemplate>
    </asp:Repeater>

你背后的代码是:

 e.Item.Visible = e.Item.ItemIndex % 3 == 0