<asp:Repeater ID="RptCountView" runat="server" OnItemDataBound="RptCountView_ItemDataBound">
                    <ItemTemplate>
                        <tr>
                            <td>
                                <asp:Label ID="lblNo" runat="server"></asp:Label>
                            </td>
                            <td>
                                <asp:HiddenField ID="HdEid" Value='<%#Eval("Eid") %>' runat="server" />
                                <%#Eval("Bname") %>
                            </td>
                            <td>
                                <%#Eval("Ename") %>
                            </td>
                            <asp:Repeater ID="RptMoutleTile" OnItemDataBound="RptMoutleTile_ItemDataBound" runat="server">
                                <ItemTemplate>
                                        <asp:HiddenField ID="HDMenuTitle" Value='<%#Eval("MenuTitleType") %>' runat="server" />
                                        <asp:Repeater ID="RptMenuTol" OnItemDataBound="RptMenuTol_ItemDataBound" runat="server">
                                            <ItemTemplate>
                                                <td>
                                                    <asp:Label ID="lblCount" Text="次数" runat="server"></asp:Label>
                                                </td>
                                                <td>
                                                    <asp:Label ID="lblPre" Text="比重" runat="server"></asp:Label>
                                                </td>
                                            </ItemTemplate>
                                        </asp:Repeater>
                                </ItemTemplate>
                            </asp:Repeater>
                            <td>
                                <asp:Label ID="lblTotalCount" runat="server" Text="Label"></asp:Label>
                            </td>
                        </tr>
                    </ItemTemplate>
                </asp:Repeater>
我想在第三级repeate(RptMenuTol) 的ItemDataBound事件中获取 第一级repeater(RptCountView) 和第二级repeater(RptMenuTol) 中的值  跪求答案   

解决方案 »

  1.   

    我给你说下思路Repeater1 在ItemDataBound的时候,你会在里面e.Item.FindControl 找到Repeater2
    Repeater2 在ItemDataBound的时候,你会在里面e.Item.FindControl 找到Repeater3
    这个时候Repeater3在ItemDataBound的时候,你需要找到Repeater1 和 Repeater2的控件你只需要提取两个变量int _repeaterItemIndex1;
    int _repeaterItemIndex2;然后在ItemDataBound1 的时候这样写        void Repeater3_ItemDataBound(object sender, RepeaterItemEventArgs e)
            {            if (e.Item.ItemType == ListItemType.Item)
                {
                    RepeaterItem item1= Repeater1.Items[_repeaterItemIndex1];
                    RepeaterItem item2= Repeater2.Items[_repeaterItemIndex2];                item1.FindControl("你需要在Repeater1找的控件");
                    item2.FindControl("你需要在Repeater2找的控件");
                }        }然后对找到的控件赋值即可        void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
            {            if (e.Item.ItemType == ListItemType.Item)
                {
                    _repeaterItemIndex1 = e.Item.ItemIndex;
                }        }Repeater2类似
    因为执行顺序是这样的Repeater1的ItemDataBound->Repeater2的ItemDataBound->Repeater3的ItemDataBound
    所以你在Repeater3的ItemDataBound中可以这样写
      

  2.   

    我给你说下思路Repeater1 在ItemDataBound的时候,你会在里面e.Item.FindControl 找到Repeater2
    Repeater2 在ItemDataBound的时候,你会在里面e.Item.FindControl 找到Repeater3
    这个时候Repeater3在ItemDataBound的时候,你需要找到Repeater1 和 Repeater2的控件你只需要提取两个变量int _repeaterItemIndex1;
    int _repeaterItemIndex2;然后在ItemDataBound1 的时候这样写
            void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
            {            if (e.Item.ItemType == ListItemType.Item)
                {
                    _repeaterItemIndex1 = e.Item.ItemIndex;
                }        }Repeater2类似
    因为执行顺序是这样的Repeater1的ItemDataBound->Repeater2的ItemDataBound->Repeater3的ItemDataBound
    所以你在Repeater3的ItemDataBound中可以这样写        void Repeater3_ItemDataBound(object sender, RepeaterItemEventArgs e)
            {            if (e.Item.ItemType == ListItemType.Item)
                {
                    RepeaterItem item1= Repeater1.Items[_repeaterItemIndex1];
                    RepeaterItem item2= Repeater2.Items[_repeaterItemIndex2];                item1.FindControl("你需要在Repeater1找的控件");
                    item2.FindControl("你需要在Repeater2找的控件");
                }        }然后对找到的控件赋值即可
    刚才排版乱了

      

  3.   

    用e.Item.NamingContainer.FindControl("HDMenuTitle")获取第二层Repeater中的HiddenField控件,用e.Item.NamingContainer.NamingContainer.FindControl("HdEid")获取第一层Repeater中的HiddenField控件。
      

  4.   

    尽量不要想当然地去瞎FindControl。保证正确的组合关系,对于倒置了的关系,应该使用事件通讯,而不是什么FindControl。