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



我有一个嵌套中继器的例子,其中子中继器嵌套在父中继器的ItemTemplate中。父级的DataSource是Dictionary<String, List<XYZ>>。在父中继器的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. 触发事件的顺序是否如下:

a。Dictionary<Key, List<XYZ>> 第1行的Parent_ItemDataBound

i。父中继器第1行的每个子行的Child_ItemDataBound

ii。用于子中继器页脚的Child_ItemDataBound

b。Dictionary<Key, List<XYZ>> 第2行的Parent_ItemDataBound

i。父中继器第2行的每个子行的Child_ItemDataBound

ii。用于子中继器页脚的Child_ItemDataBound

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

以下是您的问题的答案:

  1. 是的,您可以访问父中继器项目控制

    var hfID=e.Item.NaminContainer.NamingContainer.FindControl("hfID")作为HiddenField;

  2. 顺序是正确的。

希望对有所帮助

最新更新