[英]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.