簡體   English   中英

使用DataTable Asp.net的嵌套中繼器

[英]Nested Repeater Using DataTable Asp.net

問題是當我使用dt1作為rpt2.DataSource(嵌套中繼器源)時,程序運行良好,但是當我使用dt2作為源(並相應地更改Eval())時,輸出僅是First Repeater。

dt2的輸出=>

1只公羊

2個處理器

3張圖形卡

當我為dt1進行更改時輸出=>

1只公羊

1個

2

3

2個處理器

1個

2

3

3張圖形卡

1個

2

3

<body>
<form id="form1" runat="server">
    <div>
        <asp:Repeater ID="my_repeater1" runat="server" OnItemDataBound="my_repeater1_ItemDataBound">
            <ItemTemplate>
                <asp:Label Text='<%#Eval("ID")%>' ID="my_text1" runat="server" />
                <asp:Label Text='<%#Eval("CATEGORY")%>' ID="my_text2" runat="server" />
                <br />
                <asp:Repeater runat="server" ID="my_repeater2">
                    <ItemTemplate>
                        <asp:Label Text='<%#Eval("ITEMS")%>' ID="lbl1" runat="server" />
                        <br />
                    </ItemTemplate>
                </asp:Repeater>
            </ItemTemplate>
        </asp:Repeater>
    </div>
</form>

public partial class WebForm1 : System.Web.UI.Page
{
    DataTable dt1 = new DataTable();
    DataTable dt2 = new DataTable();
    DataTable dt3 = new DataTable();

    protected void Page_Load(object sender, EventArgs e)
    {

        dt1.Columns.Add("ID");
        dt1.Columns.Add("CATEGORY");
        dt1.Rows.Add("1", "Rams");
        dt1.Rows.Add("2", "Processors");
        dt1.Rows.Add("3", "GraphicCards");
        my_repeater1.DataSource = dt1;
        my_repeater1.DataBind();

        dt2.Columns.Add("ID");
        dt2.Columns.Add("ITEMS");
        dt2.Rows.Add("1", "DDR1");
        dt2.Rows.Add("2", "DDR2");
        dt2.Rows.Add("3", "DDR3");

    }

    protected void my_repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        Repeater rpt2 = (Repeater)e.Item.FindControl("my_repeater2");
        rpt2.DataSource = dt2;
        rpt2.DataBind();

    }
}

執行my_repeater1.DataBind() ,.NET將開始構建my_repeater1。 對於添加到my_repeater1的每一行, my_repeater1_ItemDataBound調用my_repeater1_ItemDataBound 並且由於您將dt2用作嵌套中繼器的源,因此將不會獲得任何數據,因為dt2尚未填充數據。 這僅在my_repeater1的構建完成后才在您的示例中發生。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM