Repeater簡單應用(動態改變內部樣式)

來源:互聯網
上載者:User
閑話少說,還是說說今天要談的:Reteater,做asp.net的朋友可能都很喜歡的好東西,先插句,不是說GridView,DataList這類不好,看在什麼地方什麼情況下應用了,不過在前台頁面顯示來說,還是比較喜歡Repeater,效能好,而且很靈活,今天就舉個我在剛進公司時遇到的關於Repeater在小問題。
    先說下問題,在一個UL,LI顯示圖片列表中,要求每行顯示四個圖片,本以為是一個超簡單的,也很有自信,拿過Repeater就編輯模板,可是我沒有注意到,每行的LI應用的樣式不同,所以問題也來了,經過一翻“折騰”,終於找著瞭解決辦法。
   先看下寫完的模板:
Code
                <asp:Repeater ID="Repeater1" runat="server" OnItemCreated="Repeater1_ItemCreated">
                    <HeaderTemplate>
                        <ul class="healweek">
                    </HeaderTemplate>
                    <ItemTemplate>
                        <li id="rep" runat="server"><a href="health_idea_detail.aspx?id=<%#Eval("id") %>&type=3">
                            <asp:Image ID="Image3" runat="server" ImageUrl='<%#Eval("Defaultimage","~/img/small/health/{0}") %>'
                                AlternateText='<%#Eval("idearname") %>' Width="160" Height="120"
/></a>
<span><a
                                    href="health_idea_detail.aspx?id=<%#Eval("id") %>&type=3">
                                    <%#Eval("idearname") %></a></span></li>
                    </ItemTemplate>
                    <FooterTemplate>
                        </ul>
                    </FooterTemplate>
                </asp:Repeater>

(為了完整性,把UL也添加在了頭部)
除了普通的方式編寫模板及內部的綁定資料外,在ItemTemplate內在li改為了<li id="rep" runset="server">
關鍵就在這,這樣就可以在CS檔案裡對LI進行動態操作,其他的都是再普通不過的綁定資料了。

在Repeater1_ItemCreated事件中對它進行了操作,如下:
Code
protected
void Repeater1_ItemCreated(object sender, RepeaterItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {
            if ((e.Item.ItemIndex +
1) %
4
==
0)
            {
                HtmlControl divContent = e.Item.FindControl("rep") as HtmlControl;
                divContent.Attributes.Add("class", "lastChild");
            }
        }
    }

解釋下:
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
大家非常熟悉,判斷模板內容項的
if ((e.Item.ItemIndex + 1) % 4 == 0)
這個就是進行判斷哪一項是要變更樣式,上例中是對每行最後一項也就是第4,8..進行更新樣式,所以在這裡當ItemIndex=3,7..時就執行下面的操作:
HtmlControl divContent = e.Item.FindControl("rep") as HtmlControl;
                divContent.Attributes.Add("class", "lastChild");
尋找出REP,對其樣式修改為lastChild就OK了!
這隻是一個非常簡單的應用,多瞭解控制項的運行周期感覺挺有用。
當然也有別的方法可以實現,也可以在HTML頁面進行<%%>來動態輸出(asp.net mvc中常用)。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.