Repeater 嵌套,子级Repeater获取 父级Repeater 中的值

时间:2021-07-29 09:52:33

1、Container英文就是容器的意思,并且在我们程序中也确实就是!那么这个Container在我们的显示数据用的(GridView,Repeater,DataList等等)这些里面又是一个什么现象来?个人理解其实,Container就是代表的行,Container.DataItem代表的就是数据行,或者行中的数据项,这里很有意思哈,微软为什么这么做?其实我想的是,行中,不一定都是从数据源中读出的(这里的数据源,代表的就是数据库中的表中的数据)也有可能有html标签,或者服务器端控件,那么和显然,微软为了区分这一点就用了Container.DataItem(翻译成:这一行中的数据行或者这一行中的数据项),当我们的数据源头在发生变化时,那么,这里的Container.DataItem.GetType()的类型也在发生变化,这里我从不间断的调试的得来,或者通过,Container.DataItemIndex,数据行索引得来

2、那么Contaier.代表的是一行那Repeater来说,也就是一个RepeaterItem,那么,Container.Parent代表的是什么来?就是Repeater本身,那么Container.Parent.Parent代表的就是父容器的行!

所以就对下面做出了解释!

子级Repeater中绑定父级Repeater的某个字段:

 方法1:<%# DataBinder.Eval((Container.NamingContainer.NamingContainer as RepeaterItem).DataItem, "PropertyName"%>

方法2:<%# DataBinder.Eval((Container.Parent.Parent as RepeaterItem).DataItem, "PropertyName"%>

 二层嵌套:<%# DataBinder.Eval((Container.Parent.Parent as RepeaterItem).DataItem, "PropertyName"%>

三层嵌套:<%# DataBinder.Eval((Container.Parent.Parent.Parent.Parent as RepeaterItem).DataItem, "PropertyName"%>

四层嵌套:<%# DataBinder.Eval((Container.Parent.Parent.Parent.Parent.Parent.Parent as RepeaterItem).DataItem, "PropertyName"%>

2.在子级Repeater中引用父级Repeater某个控件的值: <%# (Container.Parent.Parent.FindControl("txtUserID"as TextBox).Text%>