ASP.NET實現(xiàn)Repeater控件的數(shù)據(jù)綁定
Repeater基礎(chǔ)
在aspx文件中加入Repeater 控件,在<ItemTemplate></ItemTemplate>包含的范圍里加入自己控制的代碼,需要替換的變量使用<%# Eval("SellerName")%>;注意兩側(cè)的引號。
.aspx:
<asp:Repeater ID="SellerRpt" runat="server"> <ItemTemplate> <li><a href='<%# Eval("SellerName")%>' target="_blank"> <%# Eval("ComName")%></a></li> </ItemTemplate> </asp:Repeater>
對應(yīng)的后臺cs中,在頁面加載處加入數(shù)據(jù)綁定的代碼:
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { DataTable dt = SellerDA.GetTopHotSellers(9); SellerRpt.DataSource = dt; SellerRpt.DataBind(); } }
aspx中"SellerName"、"ComName"為DataTable 中的列名。
優(yōu)化
直接使用DataItem可減少Eval函數(shù)的執(zhí)行步驟,優(yōu)化頁面解析時間:
<%# ((DataRowView)Container.DataItem)["SellerName"]%>替換<%# Eval("SellerName")%>
ArrayList數(shù)據(jù)源
如果數(shù)據(jù)源是ArrayList,并且ArrayList為一列string數(shù)組,則可不用寫出列名:
.aspx:
<asp:Repeater ID="topAdHintRpt" runat="server"> <ItemTemplate> <asp:Label ID="BarLabel" CssClass="bar" runat="server" Text="|"></asp:Label> <a href="#" rel="external nofollow" ><span> <%#Container.DataItem%></span></a> </ItemTemplate> </asp:Repeater>
.cs:
ArrayList alterText; AdDA.GetIndexTopList(out alterText); topAdHintRpt.DataSource = alterText; topAdHintRpt.DataBind();
處理后顯示
某些情況下,數(shù)據(jù)庫中檢索出來的數(shù)據(jù)并不適合直接顯示出來,想要適當(dāng)處理后顯示(eg:日期的格式,字符串長度的控制),可使用標(biāo)簽來占位,在onitemdatabound函數(shù)中自行控制:
.aspx:
<asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="ProRpt_ItemDataBound"> <ItemTemplate> <asp:Label ID="colinDate" runat="server" Text=""></asp:Label> </ItemTemplate> </asp:Repeater>
.cs:
protected void ProRpt_ItemDataBound(object sender, RepeaterItemEventArgs e) { if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { DataRowView rowv = (DataRowView)e.Item.DataItem;//找到分類Repeater關(guān)聯(lián)的數(shù)據(jù)項 string strDate = rowv["clDate"].ToString(); Label DateLB = e.Item.FindControl("colinDate") as Label; DateLB.Text = strDate.Substring(0, 10); } }
嵌套Reapeter的顯示
對于某些復(fù)雜的顯示邏輯,需用用到Reapeter的嵌套,這里需要自行控制2層數(shù)據(jù)源的數(shù)據(jù)綁定:
.aspx:
<asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="ProRpt_ItemDataBound"> <ItemTemplate> <asp:Repeater ID="ParaRpt" runat="server" OnItemDataBound="ParaRpt_ItemDataBound"> <ItemTemplate> <asp:Label ID="bar" CssClass="bar" runat="server" Text="|"></asp:Label> <span class="para"> <%# Eval("Name")%>: <%# Eval("Value")%></span> </ItemTemplate> </asp:Repeater> </ItemTemplate> </asp:Repeater>
.cs:
protected void ProRpt_ItemDataBound(object sender, RepeaterItemEventArgs e) { //判斷里層repeater處于外層repeater的哪個位置( AlternatingItemTemplate,F(xiàn)ooterTemplate, //HeaderTemplate,,ItemTemplate,SeparatorTemplate if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { Repeater rep = e.Item.FindControl("ParaRpt") as Repeater;//找到里層的repeater對象 DataRowView rowv = (DataRowView)e.Item.DataItem;//找到分類Repeater關(guān)聯(lián)的數(shù)據(jù)項 string str = Convert.ToString(rowv["Pro_Content"]); //獲取填充子類的內(nèi)容 rep.DataSource = Product.FillPara(str); rep.DataBind(); } }
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 詳解ASP.NET-----Repeater數(shù)據(jù)控件的用法總結(jié)
- 詳解ASP.NET數(shù)據(jù)綁定操作中Repeater控件的用法
- ASP.NET數(shù)據(jù)綁定之Repeater控件
- asp.net中使用 Repeater控件拖拽實現(xiàn)排序并同步數(shù)據(jù)庫字段排序
- asp.net使用Repeater控件中的全選進行批量操作實例
- ASP.NET中repeater控件用法實例
- asp.net Repeater控件的說明及詳細介紹及使用方法
- asp.net下Repeater使用 AspNetPager分頁控件
- asp.net 遍歷repeater中的控件的幾種方式
相關(guān)文章
JavaScript ES6中的簡寫語法總結(jié)與使用技巧
我們在看編寫的JS ES6代碼時經(jīng)常會看到許多簡寫的語法,本篇文章就為大家一一介紹JavaScript ES6可以簡寫的語法2018-12-12淺談JavaScript_DOM學(xué)習(xí)篇_圖片切換小案例
這篇文章主要介紹了JavaScriptDOM圖片切換小案例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03javascript處理表單示例(javascript提交表單)
這篇文章主要介紹了javascript處理表單示例,處理 各種表單, 以及鏈接,按鈕的通用組件,需要的朋友可以參考下2014-04-04JS多線程API?webworker應(yīng)用場景有哪些
這篇文章主要介紹了JS多線程API?webworker應(yīng)用場景有哪些,加密數(shù)據(jù),預(yù)取數(shù)據(jù),預(yù)渲染,復(fù)雜數(shù)據(jù)處理場景,預(yù)加載圖片需要的朋友可以參考下2023-02-02