Repeater <itemtemplate>中的条件锚点?

时间:2016-12-07 23:48:56

标签: asp.net webforms pagination repeater

我正在使用转发器打印博客的页面选择器/分页链接。在博客的主视图中,数字1不应该有一个链接(因为用户已经在主页面上,因此是初始的结果集)。如果用户单击页面链接,则会添加?page=#的查询字符串,其中#是页码。加载该页面时,该编号现在应该是没有链接的编号。这很有帮助,因此人们可以看到他们所在的页面。

为了给你一个视觉,这里是批准的设计:

enter image description here

这是我的中继器标记:

<asp:Repeater ID="rptBlogPagination" runat="server">
     <ItemTemplate>
          <li>
              <a href="?page=<%# Container.DataItem %>">
                  <%# Container.DataItem %>
              </a>
          </li>
     </ItemTemplate>
</asp:Repeater>

在标记或代码隐藏中,如何首先检查当前请求/查询字符串,然后有条件地在数字周围包裹锚点?看起来三元语句/ null合并很受欢迎,但这是最佳实践吗?它看起来甚至不可能,但无论如何我试了一下,真的无法让它发挥作用......

enter image description here

我还尝试将<li> ID设为runat="server",但后面的代码无法识别它。我认为<ItemTemplate>内的元素无法访问。

2 个答案:

答案 0 :(得分:0)

您将锚定Repeater.ItemDataBound事件。您可以找到其他信息here

protected void Repeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{     
     if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
     {
         // Your conditional logic would go here.
     }
}

有条件的一个例子是在DataItem上实例化。所以它看起来像:

((Example)e.Item.DataItem).PropertyInPoco == "Some Value"

希望这能为你澄清。

答案 1 :(得分:0)

所提供的答案都没有用,所以我最终保留了所有页码数,但是通过将颜色设置为黑色而不是橙色,将css类添加到用户当前正在查看的页面。