簡體   English   中英

直放站內的直放站-父級ID

[英]Repeater inside repeater - parent ID

直放站中的直放站是我的問題的答案。

但是,我對childRepeater.DataSource = ...;感到困惑childRepeater.DataSource = ...; 因為我需要使用一種方法來獲取數據,並且該方法使用參數parent ID 我不明白如何獲取parent ID (外部中繼器的ID)的值。

我看了其他一些例子,但沒有答案有效...

使用引用的答案將是類似這樣的,當然只需檢查是否為空。

protected void ItemBound(object sender, RepeaterItemEventArgs args)
    {
        if (args.Item.ItemType == ListItemType.Item || args.Item.ItemType == ListItemType.AlternatingItem)
        {
            Repeater childRepeater = (Repeater)args.Item.FindControl("ChildRepeater");
            Repeater parentRepeater = (Repeater)args.Item.FindControl("ParentRepeater");       
            childRepeater.DataSource = YourMethod(parentRepeater.ID);
            childRepeater.DataBind();
        }
    }

在此處輸入圖片說明

<asp:Repeater ID="ParentRepeater" runat="server"    
   OnItemDataBound="ParentRepeater_ItemDataBound">
    <ItemTemplate>
        <strong>Parent</strong>
        <asp:Label runat="server" ID="FirstNameLabel" 
        Text='<%# Eval("FirstName") %>' />
        <asp:Label runat="server" ID="LastNameLabel" 
        Text='<%# Eval("LastName") %>' />
        <br/>
        <!-- Repeated data -->
        <asp:Repeater ID="ChildRepeater" runat="server">
            <ItemTemplate>
                <!-- Nested repeated data -->
                <strong>Children</strong>
                <asp:Label runat="server" ID="FirstNameLabel" 
                Text='<%# Eval("FirstName") %>' />
                <asp:Label runat="server" ID="LastNameLabel" 
                Text='<%# Eval("LastName") %>' /><br/>
            </ItemTemplate>
        </asp:Repeater>
        <hr/>
    </ItemTemplate>
</asp:Repeater>

public class User
{
    public int UserId { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }

    public List<User> Children;

    public User()
    {
        Children = new List<User>();
    }
}

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        var users = new List<User>
        {
            new User
            {
                UserId = 1,
                FirstName = "Jon",
                LastName = "Doe",
                Children = new List<User> {new User {
                  UserId = 3, FirstName = "Marry", LastName = "Doe"}}
            },
            new User
            {
                UserId = 2,
                FirstName = "Eric",
                LastName = "Newton",
                Children = new List<User> {new User {
                  UserId = 3, FirstName = "Nick", LastName = "Newton"}}
            }
        };

        ParentRepeater.DataSource = users;
        ParentRepeater.DataBind();
    }
}

protected void ParentRepeater_ItemDataBound(object sender, 
    RepeaterItemEventArgs args)
{
    if (args.Item.ItemType == ListItemType.Item || 
       args.Item.ItemType == ListItemType.AlternatingItem)
    {
        var user = args.Item.DataItem as User;
        var childRepeater = (Repeater) args.Item.FindControl("ChildRepeater");

        // You can get parent id like this - 
        // int parentUserId = user.UserId;

        childRepeater.DataSource = user.Children;
        childRepeater.DataBind();
    }
}

暫無
暫無

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

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