2012-11-28 74 views
2

我有一個與Repeater一起顯示的活動列表。我已經使用計時器來顯示這些,所以計時器不是問題。這是我必須將其放入Timer_tick方法的代碼。asp:Repeater with highlight(bold font)row with timer

「突出顯示計時器」應該突出顯示一次一個項目/行,然後我想顯示一些與突出顯示的行有關的信息。

如果使用另一個控件沒有問題,它更容易。我不必是一個直放站。我只是用它因造型-可能性(這是不是隻是一個行中顯示,但與幾個換行符等)

按照要求:

(中繼器)

<asp:Repeater ID="Repeater1" runat="server"> 
    <ItemTemplate> 
     <div id="divActivity" runat="server"> 
      <span style="font-size:30px;"> 
       <%# DataBinder.Eval(Container.DataItem, "act_headline") %> 
      </span> 
      <br /> 
      <img alt="mapIcon" src="../img/mapIcon.gif" height="15px" width="15px" style="position:absolute;" /> 
      <span style="font-size:12px; font-style:italic; margin-left:23px;">  
       <%# DataBinder.Eval(Container.DataItem, "act_place") %> 
      </span> 
      <img alt="watchIcon" src="../img/watchIcon.png" height="15px" width="15px" style="position:absolute;" /> 
      <span style="font-size:12px; font-style:italic; margin-left:23px;"> 
       <%# DataBinder.Eval(Container.DataItem, "act_start") %> - <%# DataBinder.Eval(Container.DataItem, "act_end") %> 
      </span> 
      <br /> 
      <div style="word-wrap: break-word; width:1000px; margin-top:20px; padding:0;"> 
       <%# DataBinder.Eval(Container.DataItem, "act_text") %> 
      </div> 
      <br /> 
       <img alt="infoIcon" src="../img/infoIcon.png" height="15px" width="15px" style="position:absolute;" /> 
      <span style="font-size:12px; margin-left:23px;"><a target="_blank" href="http://<%# DataBinder.Eval(Container.DataItem, "act_info") %>"><%# DataBinder.Eval(Container.DataItem, "act_info") %></a> 
      </span> 
     </div> 
    </ItemTemplate> 
</asp:Repeater> 

我在Timer_tick事件中沒有任何東西,因爲我嘗試了幾件事情,並在失敗後將其刪除。希望它夠了。

+0

你能告訴我們一些你已經嘗試過的代碼嗎? –

+0

我已將Repeater的代碼添加到主帖子中。 – wazzadaya

+0

如果我明白你的意思,你一直試圖突出顯示一件物品? –

回答

0

我會通過在Repeater.Items集合上循環在tick事件處理程序中使用類似的東西來爲突出顯示的項設置一個特殊的CSS類。

像這樣(未經):

int currentHighlight = -1; 
int nextHighlight = -1; 
for (int i = 0; i < Repeater1.Items.Count; i++) 
{ 
    HtmlControl htmlDiv = (HtmlControl)Repeater1.Controls[i].Controls[1]; 

    if (htmlDiv.Attributes["class"] != null) 
    { 
     if (htmlDiv.Attributes["class"].Contains("highlighted")) // this is the currently highlighted item 
     { 
      // record currently highlighted item index 
      currentHighlight = i; 

      // remove highlight 
      htmlDiv.Attributes["class"].Replace("highlighted", ""); 
      htmlDiv.Attributes["class"].Trim(); 
     } 
    } 
} 

if ((currentHighlight == -1) || (currentHighlight == Repeater1.Items.Count)) 
{ 
    // handle first Item highlighting 
    nextHighlight = 1; 
} 
else 
{ 
    // handle standard case 
    nextHighlight = currentHighlight + 1; 
} 

// highlight next item 
((HtmlControl)Repeater1.Controls[nextHighlight].Controls[1]).Attributes["class"] += " highlighted"; 

然後你就可以使用CSS highlighted類來處理樣式(你提到的加粗字體),以及在JavaScript或jQuery的,例如一些特殊的行爲。

順便說一句,您可以對RepeaterItem對象執行任何其他操作,只要您獲取當前突出顯示的對象。

+0

我現在正在測試它,但我得到的錯誤,RepeaterItem不包含CssClass的定義? – wazzadaya

+0

對不起,您將不得不爲此使用'HtmlControl'類。我已經編輯了上面的代碼... –

+0

我已經試過了,但問題是,div(divActivity)的id爲每行更改,因爲它們是唯一的。 當我使用「自動生成」的ID,它沒有工作。不過,當我嘗試使用「靜態」div-id時,我這樣做了。你將如何獲得「自動生成」的ID?也許你知道一種讓它工作的方法。 – wazzadaya