嵌套中继器 - 从页脚中的父行访问值

时间:2012-02-03 08:57:53

标签: asp.net repeater

我有一个嵌套转发器的情况,其中子转发器嵌套在父转发器的ItemTemplate中。父级的DataSource是Dictionary<String, List<XYZ>>。 在父级Repeater的ItemDataBound中,我使用的是完整代码:

     protected void rptParent_ItemDataBound(object sender, RepeaterItemEventArgs e)
     {
   if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
         {
      if (e.Item.DataItem is KeyValuePair<String, List<Object>>)
            {
                pair = (KeyValuePair<String, List<XYZ>>)e.Item.DataItem;
            }

            Repeater childRepeater = e.Item.FindControl("rptChild") as Repeater;

            //bind the child repeater.
            childRepeater.ItemDataBound += new RepeaterItemEventHandler(childRepeater_ItemDataBound);
            childRepeater.DataSource = pair.Value;
            childRepeater.DataBind();
    }
}

protected void childRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.Footer)
        {
    //Access the Parent row's Key value

  }
    }

有两个问题:

  1. 我可以在绑定父级时使用隐藏字段并将其设置为Key值,然后检索子级中的隐藏字段值吗?

  2. 触发事件的顺序如下:

  3. 一个。 Parent_ItemDataBound

    的第1行Dictionary<Key, List<XYZ>>

    我。父转发器的第1行的每个子行的Child_ItemDataBound

    II。对于儿童中继器的页脚Child_ItemDataBound

    Parent_ItemDataBound

    的第2行Dictionary<Key, List<XYZ>>

    我。父转发器第2行的每个子行的Child_ItemDataBound

    II。对于儿童中继器的页脚Child_ItemDataBound

    等等。换句话说,每个子行的Parent_ItemDataBound后面会跟Child_ItemDataBound个事件 - 循环重复吗?

1 个答案:

答案 0 :(得分:0)

以下是您问题的答案:

  1. 是的,您可以访问父转发器项控件

    var hfID = e.Item.NamingContainer.NamingContainer.FindControl(“hfID”)as HiddenField;

  2. 订单是正确的。

  3. 希望有所帮助