方法一:
這篇文章主要講解了在asp.net中Repeater控制項嵌套綁定的問題,一般我們用兩個Repeater控制項嵌套綁定來實作類別別和類別下資訊的綁定。 在一般的網站中瀏覽類別的使用者控制項通常都位於大多數 ASP.NET 頁的左邊,它使使用者能夠按類別快速的尋找產品。最近遇到一個客戶,因為在他網站上展示的產品並不多,所以要求在原有類別瀏覽的基礎上將產品也加進去。一來更方便,二來加長了左部導覽列的長度使頁面更協調。原有的分類導覽列是由Repeater實現的,現在需要在每一個分類下加入該類的商品資訊,於是我想到了在原有Repeater中嵌套Repeater。實現介面如下: 前台頁面部分: 後台代碼部分(部分代碼): //在綁定分類品名時,綁定分類下的產品 //商品分類名稱rptCategories綁定省略,正常綁定即可,下面代碼為商品分類名稱rptCategories的ItemDataBound事件
private void rptCategories_ItemDataBound(object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e)
{
Repeater rptProduct = (Repeater)e.Item.FindControl("rptProduct"); //找到商品分類編號
object CategorieId = DataBinder.Eval(e.Item.DataItem, "ID"); //根據分類ID查詢該分類下的產品,並綁定產品
Repeater rptProduct.DataSource = 擷取產品列表的方法(參數:Convert.ToString(CategorieId));
rptProduct.DataBind();
}
方法二:
自動擷取資料庫中的主從關係資料,以下是擷取省份及省份對應的城市,代碼如下:
<asp:repeater ID="Repeater1" runat="server">
<ItemTemplate >
<span style ="font-weight :bold "><%#Eval ("pname") %></span>
<ul>
<asp:Repeater ID="detal" runat ="server" DataSource ='<%#GetCity(Eval("pid").ToString()) %>'>
<ItemTemplate >
<li><%#Eval("city_name") %></li>
</ItemTemplate>
</asp:Repeater>
</ul>
</ItemTemplate>
</asp:repeater>
重點:DataSource ='<%#Getawd(Eval("pid").ToString()) %>' 調用GetCity方法擷取子類
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
BindGrid();
}
//擷取大類的類別
protected void BindGrid()
{
string cmdText = "select pid, pname from pro";
DataTable dt = vc.GetDataTable(cmdText );
Repeater1.DataSource = dt;
Repeater1.DataBind();
}
//擷取小類內容
protected DataTable GetCity(string id)
{
string cmdText = "select city_name from city where promo_id = " + id + "";
DataTable dt = vc.GetDataTable(cmdText);
return dt;
}