ChildRepeater получает значение из ParentRepeater в CodeBehind
Что я пытаюсь сделать, это
<asp:Repeater ID="ParentRepeater" runat="server" OnItemDataBound="ItemBound">
<ItemTemplate>
<asp:Repeater ID="Repeater_SideMenu_Guides_Medlem" runat="server">
<ItemTemplate>
</ItemTemplate>
</asp:Repeater>
</ItemTemplate>
</asp:Repeater>
Codebehind
ParentRepeater.DataSource = CraftGuides.GetAllGroups();
ParentRepeater.DataBind();
protected void ItemBound(object sender, RepeaterItemEventArgs args)
{
if (args.Item.ItemType == ListItemType.Item)
{
Repeater childRepeater = (Repeater)args.Item.FindControl("ChildRepeater");
childRepeater.DataSource = CraftGuides.GetGuidesByGroupID( Insert ID from Parent Here );
childRepeater.DataBind();
}
}
Дело в том, что я не знаю, чтобы получить идентификатор от родителя внутри ребенка, чтобы собрать данные из базы данных
1 ответ
Решение
При условии, что у вас есть Group
объект, вы можете использовать следующее:
var item = args.Item;
var dataItem = item.DataItem as Group;
Затем вы легко можете получить идентификатор объекта группы и передать его в свой GetGuidsByGroupID()
,
Мне нравится использовать as
ключевое слово, так как оно вернет ноль, если приведение не выполнено. С помощью (Group)item.DataItem
бросил бы исключение, если бы это не удалось.