2016-12-07 6 views
0

Я использую ретранслятор для печати селекторов страниц/ссылок на страницы для блога. На главном экране блога номер 1 не должен иметь ссылку вокруг него (так как пользователь уже находится на главной странице и, следовательно, исходный набор результатов). Если пользователь нажимает ссылку на страницу, это добавляет строку запроса ?page=#, где # - номер страницы. Когда эта страница загружается, это число теперь должно быть тем, у кого нет ссылки. Это полезно, чтобы люди могли видеть, на какой странице они находятся.Условный якорь в репитере <ItemTemplate>?

Чтобы дать Вам визуальный, вот утвержденный дизайн:

enter image description here

Вот моя разметка повторителя:

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

В любой разметке или коде-позади, как сначала проверить текущую строку запроса/запроса, а затем условно обернуть якорь вокруг номера? Похоже, что тройные высказывания/нуль-коалесценция популярны, но это лучшая практика? Он даже не представляется возможным, но я дал ему попробовать в любом случае, и на самом деле не мог заставить его работать ...

enter image description here

Я также попытался давая <li> идентификатор runat="server" но код сзади не узнал. Я думаю, что элементы внутри <ItemTemplate> недоступны.

+0

Не могли бы вы использовать ASP.Net *** [DataPager] (https://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.datapager (v = vs.110). aspx) *** Управление сервером? – Win

+0

@Win Нет причин. Я не делал этого раньше, является ли DataPager лучшим способом? Может ли эта конкретная функция проще реализовать? – Paul

ответ

0

Ни один из предоставленных ответов не работал, поэтому я оставил привязки всех номеров страниц, но добавил класс css к тем, которые пользователь просматривал, делая цвет черным вместо оранжевого.

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" 

Надеюсь, это прояснит для вас.

+0

Я в замешательстве. Предположим, что это первая страница, нет строки запроса. Как указать, что привязка не должна включаться в разметку? Можно ли получить разметку из события ItemDataBound? – Paul

+0

Каждый раз, когда ваш ретранслятор выполняет, он попадает в событие. Таким образом, вы сделали бы там свое сравнение. В зависимости от страницы, postback будет означать строку запроса. Поэтому я не уверен, в чем вас смущает. – Greg

 Смежные вопросы

  • Нет связанных вопросов^_^