2016-01-08 6 views
0

Я создаю график, график времени есть бар работает до центра экрана, первый пост на левой стороне, второй справа и т.д. и т.п.ASP.NET WebForms Runat вызова сервер не работает, когда я добавить повторитель

при статическом тексте можно использовать следующий вызов, чтобы выяснить, какой блок CSS использовать:

<li id ="li_left" runat ="server" > 
      <div class="timeline-datetime"> 
       <span class="timeline-time">8:19 
       </span><span class="timeline-date">Today</span> 
      </div> 
      <div class="timeline-badge blue"> 
       <i class="fa fa-tag"></i> 
      </div> 
      <div class="timeline-panel"> 
       <div class="timeline-header bordered-bottom bordered-blue"> 
        <span class="timeline-title">New Items Arrived 
        </span> 
        <p class="timeline-datetime"> 
         <small class="text-muted"> 
          <i class="glyphicon glyphicon-time"></i> 
          <span class="timeline-date">Today</span> 
          - 
              <span class="timeline-time">8:19</span> 
         </small> 
        </p> 
       </div> 
       <div class="timeline-body"> 
        <p>My Post Message</p> 
       </div> 
      </div> 
     </li> 

Тогда в моем коде позади Я использую это:

Private Sub li_left_Load(sender As Object, e As EventArgs) Handles li_left.Load 
    If IsEven(postCount) = True Then 
     li_left.Style.Add("display", "visible") 
     postCount += 1 
    Else 
     li_left.Style.Add("display", "none") 
    End If 
End Sub 

Полный передний код:

<ul class="timeline"> 
    <li class="timeline-node"> 
     <a class="btn btn-palegreen">NOW</a> 
    </li> 
    <asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSource1"> 
     <ItemTemplate> 

    <li id ="li_left" runat ="server" > 
     <div class="timeline-datetime"> 
      <span class="timeline-time">8:19 
      </span><span class="timeline-date">Today</span> 
     </div> 
     <div class="timeline-badge blue"> 
      <i class="fa fa-tag"></i> 
     </div> 
     <div class="timeline-panel"> 
      <div class="timeline-header bordered-bottom bordered-blue"> 
       <span class="timeline-title">New Items Arrived 
       </span> 
       <p class="timeline-datetime"> 
        <small class="text-muted"> 
         <i class="glyphicon glyphicon-time"></i> 
         <span class="timeline-date">Today</span> 
         - 
             <span class="timeline-time">8:19</span> 
        </small> 
       </p> 
      </div> 
      <div class="timeline-body"> 
       <p>My Left Post Message</p> 
      </div> 
     </div> 
    </li> 
    <li class="timeline-inverted" id="li_right" runat ="server" > 
     <div class="timeline-datetime"> 
      <span class="timeline-time">3:10 
      </span><span class="timeline-date">Today</span> 
     </div> 
     <div class="timeline-badge darkorange"> 
      <i class="fa fa-map-marker font-120"></i> 
     </div> 
     <div class="timeline-panel bordered-right-3 bordered-orange"> 
      <div class="timeline-header bordered-bottom bordered-blue"> 
       <span class="timeline-title">Visit Appointment 
       </span> 
       <p class="timeline-datetime"> 
        <small class="text-muted"> 
         <i class="glyphicon glyphicon-time"></i> 
         <span class="timeline-date">Today</span> 
         - 
             <span class="timeline-time">3:10</span> 
        </small> 
       </p> 
      </div> 
      <div class="timeline-body"> 
       <p>My Right Post Message</p> 
       <p> 
        <i class="orange fa fa-exclamation"></i>New task added for <span><a href="#" class="info">James Dean</a></span> 
       </p> 
      </div> 
     </div> 
    </li> 


    <li class="timeline-node"> 
     <a class="btn btn-yellow">YESTERDAY</a> 
    </li> 
    <li class="timeline-node"> 
     <a class="btn btn-info">11 DECEMBER</a> 
    </li> 
     </ItemTemplate> 
    </asp:Repeater> 
</ul> 

И код позади, чтобы контролировать, какой CSS черного использовать:

 Dim postCount As Integer = 0 

Private Sub li_left_Load(sender As Object, e As EventArgs) Handles li_left.Load 
    If IsEven(postCount) = True Then 
     li_left.Style.Add("display", "visible") 
     postCount += 1 
    Else 
     li_left.Style.Add("display", "none") 
    End If 
End Sub 

Private Sub li_right_Load(sender As Object, e As EventArgs) Handles li_right.Load 
    If IsEven(postCount) = True Then 
     li_right.Style.Add("display", "none") 
    Else 
     li_right.Style.Add("display", "visible") 
     postCount += 1 
    End If 
End Sub 

Noe второй добавить ретранслятор во всем перерывах, и я не понимаю, почему.

код с ретранслятором добавил:

<ul class="timeline"> 
    <li class="timeline-node"> 
     <a class="btn btn-palegreen">NOW</a> 
    </li> 
    <asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSource1"> 
     <ItemTemplate> 

    <li id ="li_left" runat ="server" > 
     <div class="timeline-datetime"> 
      <span class="timeline-time">8:19 
      </span><span class="timeline-date">Today</span> 
     </div> 
     <div class="timeline-badge blue"> 
      <i class="fa fa-tag"></i> 
     </div> 
     <div class="timeline-panel"> 
      <div class="timeline-header bordered-bottom bordered-blue"> 
       <span class="timeline-title">New Items Arrived 
       </span> 
       <p class="timeline-datetime"> 
        <small class="text-muted"> 
         <i class="glyphicon glyphicon-time"></i> 
         <span class="timeline-date">Today</span> 
         - 
             <span class="timeline-time">8:19</span> 
        </small> 
       </p> 
      </div> 
      <div class="timeline-body"> 
       <p><%# DataBinder.Eval(Container.DataItem, "message") %></p> 
      </div> 
     </div> 
    </li> 
    <li class="timeline-inverted" id="li_right" runat ="server" > 
     <div class="timeline-datetime"> 
      <span class="timeline-time">3:10 
      </span><span class="timeline-date">Today</span> 
     </div> 
     <div class="timeline-badge darkorange"> 
      <i class="fa fa-map-marker font-120"></i> 
     </div> 
     <div class="timeline-panel bordered-right-3 bordered-orange"> 
      <div class="timeline-header bordered-bottom bordered-blue"> 
       <span class="timeline-title">Visit Appointment 
       </span> 
       <p class="timeline-datetime"> 
        <small class="text-muted"> 
         <i class="glyphicon glyphicon-time"></i> 
         <span class="timeline-date">Today</span> 
         - 
             <span class="timeline-time">3:10</span> 
        </small> 
       </p> 
      </div> 
      <div class="timeline-body"> 
       <p><%# DataBinder.Eval(Container.DataItem, "message") %></p> 
       <p> 
        <i class="orange fa fa-exclamation"></i>New task added for <span><a href="#" class="info">James Dean</a></span> 
       </p> 
      </div> 
     </div> 
    </li> 


    <li class="timeline-node"> 
     <a class="btn btn-yellow">YESTERDAY</a> 
    </li> 
    <li class="timeline-node"> 
     <a class="btn btn-info">11 DECEMBER</a> 
    </li> 
     </ItemTemplate> 
    </asp:Repeater> 
</ul> 

Первая ошибка, я получаю ручки положение требует переменной WithEvents, определенное в содержащем типа или один из его базового типа.

Если я открываю .aspx.designer, я замечаю, что мои withevents для li_left и li_right были удалены, если я вручную добавлю их обратно в сообщения об ошибках, но код не вызывается, когда я запускаю.

Любая помощь была бы принята с благодарностью.

редактировать показать работая ответа

Добавить это и фиксируется все:

Ok figured it out. I needed to process the logic in the repeater1.ItemBound 

    Private Sub Repeater1_ItemDataBound(sender As Object, e As RepeaterItemEventArgs) Handles Repeater1.ItemDataBound 
    Dim li_left = TryCast(e.Item.FindControl("li_left"), HtmlGenericControl) 
    If IsEven(postCount) = True Then 
     li_left.Style.Add("display", "visible") 
    Else 
     li_left.Style.Add("display", "none") 
    End If 

    Dim li_right = TryCast(e.Item.FindControl("li_right"), HtmlGenericControl) 
    If IsEven(postCount) = True Then 
     li_right.Style.Add("display", "none") 
    Else 
     li_right.Style.Add("display", "visible") 
    End If 
    postCount += 1 
End Sub 

ответ

2

Вместо того, чтобы использовать свой li_left_Load и события li_right_Load, вы хотите использовать событие OnItemDataBound для ретранслятора. Там вы можете установить стили для каждого элемента при их загрузке.

+0

Спасибо ... понял, должен был поразить обновление браузера и увидел, что ваше сообщение было 20 минут назад ... –