Repeater嵌套

在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();
    }


 

其實頁面百比較簡單的,希望對大家有所幫助。

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章