在Asp.net中我們常常會用到Repeater去處理一些數據,但是有些時候會覺得一個Repeater會不夠,所以我們就想到了用Repeater嵌套。
我在這裏和大家分享一下,我在學習過程的用到的Repeater嵌套,3個。
1.下面是.aspx 頁面的代碼
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<asp:Repeater ID="repFirstTarget" runat="server"
onitemdatabound="repFirstTarget_ItemDataBound">
<ItemTemplate>
<tr>
<td>
<asp:HiddenField ID="hdfFirstId" runat="server" Value='<%#Eval("FirstTargetId") %>' />
<asp:Label ID="lblFirstType" runat="server" Text="一級指標:"></asp:Label>
<asp:Label ID="lblFirstName" runat="server" Text='<%#Eval("FirstName") %>'></asp:Label>
</td>
<td>
<asp:Label ID="lblFirstGrade" runat="server" Text='<%#Eval("Grade") %>'></asp:Label>
</td>
<td>
<asp:Label ID="lblFirstRemark" runat="server" Text='<%#Eval("Remark") %>'></asp:Label>
</td>
</tr>
<tr>
<td width="50px">
</td>
<td colspan="2">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<asp:Repeater ID="repSecondTarget" runat="server" onitemdatabound="repSecondTarget_ItemDataBound">
<ItemTemplate>
<tr>
<td>
<asp:HiddenField ID="hdfSecondId" runat="server" Value='<%#Eval("SecondTargetId") %>' />
<asp:Label ID="lblSecondType" runat="server" Text="二級指標:"></asp:Label>
<asp:Label ID="lblSecondName" runat="server" Text='<%#Eval("SecondName") %>'></asp:Label>
</td>
<td>
<asp:Label ID="lblSecondGrade" runat="server" Text='<%#Eval("Grade") %>'></asp:Label>
</td>
<td>
<asp:Label ID="lblSecondRemark" runat="server" Text='<%#Eval("Remark") %>'></asp:Label>
</td>
</tr>
<tr>
<td width="50px">
</td>
<td colspan="2">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<asp:Repeater ID="repItem" runat="server" onitemdatabound="repItem_ItemDataBound">
<ItemTemplate>
<tr>
<td>
<asp:HiddenField ID="hdfItemId" runat="server" Value='<%#Eval("ItemId") %>' />
<asp:Label ID="lblItemType" runat="server" Text="子項:"></asp:Label>
<asp:Label ID="lblItemLevel" runat="server" Text='<%#Eval("ItemLevel") %>'></asp:Label>
</td>
<td>
<asp:Label ID="lblItemGrade" runat="server" Text='<%#Eval("ItemGrade") %>'></asp:Label>
</td>
<td>
<asp:Label ID="lblItemContent" runat="server" Text='<%#Eval("ItemContent") %>'></asp:Label>
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
</table>
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
</table>
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
</table>
2.下面是.cs裏面的代碼
Appraise_FirstTargetBLL firstBLL = new Appraise_FirstTargetBLL();
Appraise_SecondTargetBLL secondBLL = new Appraise_SecondTargetBLL();
Appraise_ItemBLL itemBLL = new Appraise_ItemBLL();
/// <summary>
/// 頁面狀態Id--評估Id
/// </summary>
public int Id
{
get { return ViewState["Id"] == null ? 0 : Convert.ToInt32(ViewState["Id"]); }
set { ViewState["Id"] = value; }
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Id = base.ParseQueryInt("Id");
BindRepFirstTargetData();
}
}
public void BindRepFirstTargetData()
{
repFirstTarget.DataSource = firstBLL.GetSearch(" AppraiseId=" + Id);
repFirstTarget.DataBind();
}
protected void repFirstTarget_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
Repeater rep = new Repeater();
rep = (Repeater)e.Item.FindControl("repSecondTarget");
rep.DataSource = secondBLL.GetSearch(" FirstTargetId=" + Convert.ToInt32(((HiddenField)e.Item.FindControl("hdfFirstId")).Value));
rep.DataBind();
}
protected void repSecondTarget_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
Repeater rep = new Repeater();
rep = (Repeater)e.Item.FindControl("repItem");
rep.DataSource = itemBLL.GetSearch(" SecondTargetId=" + Convert.ToInt32(((HiddenField)e.Item.FindControl("hdfSecondId")).Value));
rep.DataBind();
}
其實頁面百比較簡單的,希望對大家有所幫助。