ChildRepeater получает значение из ParentRepeater в CodeBehind - PullRequest
2 голосов
/ 31 октября 2011

Что я пытаюсь сделать, это

       <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 Ответ

3 голосов
/ 31 октября 2011

Если у вас есть Group объект, вы можете использовать следующее:

var item = args.Item;
var dataItem = item.DataItem as Group;

Затем вы легко получаете идентификатор объекта группы и передаете его в GetGuidsByGroupID().

Мне нравится использовать ключевое слово as, так как оно вернет ноль, если приведение не выполнено. Использование (Group)item.DataItem вызовет исключение, если оно завершится неудачей.

...