第一步:在前台建立兩個Repeater,一個嵌套在另一個Repeater里面,下面代碼沒什么好說的。
<asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_ItemDataBound"> <ItemTemplate> <table border="1" bordercolor="gray" style="border-collapse: collapse; "> <tr bgcolor="#c0c0c0" style="color:DimGray; font-weight:bold;"> <td width="70px" > 名稱: </td> <td width="350px"> <%# Eval("project_name")%> </td> </tr> <tr> <td colspan="2"> <asp:Repeater ID="Repeater2" runat="server"> <HeaderTemplate> <table border="1" bordercolor="gray" style="border-collapse:collapse;"> <tr> <td width="68px"> 組號 </td> <td width="120px"> 組金額 </td> </tr> </table> </HeaderTemplate> <ItemTemplate> <table border="1" bordercolor="gray" style="border-collapse: collapse;"> <tr> <td width="68px"> <%# Eval("group_no")%> </td> <td width="120px"> <%# string.Format("{0:N0}", Eval("app_value_group"))%> </td> </tr> </table> </ItemTemplate> </asp:Repeater> </td> </tr> </table> <br /> </ItemTemplate> </asp:Repeater>
第二步:建立Repeater1的綁定函數。並在適當的地方引用。
private void prRepeater1([參數1][,參數2]) { //SQL語句 string sql = "XXXXX"; //數據庫操作類執行SQL語句並返回dataset等 this.Repeater1.DataSource =DB.AccessAdp(sql); //綁定 this.Repeater1.DataBind(); } protected void Page_Load(object sender, EventArgs e) { //頁面加載引用 this.prRepeater1([參數1][,參數2]); }
第三步:也是最關鍵的地方,在Repeater1的ItemDataBound事件中綁定Repeater2,代碼如下:
protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e) { if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { Repeater rep = e.Item.FindControl("Repeater2") as Repeater; DataRowView rowv = (DataRowView)e.Item.DataItem; //以下是讀取Repeater1中綁定數據的字段,用於Repeater2的查詢條件 string strDecide_No =rowv["xxxx"].ToString(); string strVer_No = rowv["xxxx"].ToString(); //以下是Repeater2的數據讀取和綁定 string sql = " XXXXXX"; //調用數據操作類執行SQL語句 rep.DataSource = DB.AccessAdp(sql); rep.DataBind(); } }
以上是實現過程,SQL語句和數據操作類沒有列出來,請根據實際情況進行適當修改。