<asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_ItemDataBound">
    <HeaderTemplate>
        <asp:Repeater ID="Repeater2" runat="server">
        <ItemTemplate>
         <asp:Label ID="Label2" runat="server" Text='<%#Eval("pc_name") %>'
></asp:Label>
        </ItemTemplate>
        </asp:Repeater>
    </HeaderTemplate>
    <ItemTemplate>
    <li><span><%#Container.ItemIndex+2 %></span><div class="p-name"><a  href='../product.aspx?id=<%#Eval("pc_id") %>'><%#Eval("pc_name") %>
  </a></div></li>
    </ItemTemplate>
    </asp:Repeater>在这个HeaderTemplate 里Repeater2 的值怎么取到 Repeater1 绑定的值我在Repeater1_ItemDataBound里写了  if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {
            string au_id = ((DataRowView)e.Item.DataItem).Row["pc_id"].ToString();
            Repeater repeaterSub = (Repeater)e.Item.FindControl("Repeater2");
            if (repeaterSub != null)
            {
                OleDbConnection cn = new OleDbConnection(db.connstring);
                OleDbCommand cmd = new OleDbCommand("select * from product where (id = ?)", cn);
                cmd.Parameters.Add("user_name", OleDbType.Integer);
                cmd.Parameters["pc_id"].Value =au_id;
                cn.Open();
                repeaterSub.DataSource = cmd.ExecuteReader();
                repeaterSub.DataBind();
                cn.Close();
            }
                }没反应 请问怎么弄 

解决方案 »

  1.   


    <asp:Panel ID="Panel1" runat="server" ScrollBars="Vertical" width="715px" height="670px" BorderStyle="none">
          <asp:Repeater ID="RPFirstType1" runat="server" OnItemDataBound="RPFirstType1_ItemDataBound">
          <ItemTemplate>
      <div id="Row1" style="width:345px; height:150px; border-bottom:1px dashed #A09F9F; float:left">
       <div class="bgyp2_pb_le_tu" style="width:107px; height:102px; margin-left:5px; margin-top:5px; float:left; display:inline;"><img src='<%#Eval("CPicture") %>' style="width:100px; height:100px;padding-bottom:3px; padding-left:3px; padding-right:3px; padding-top:3px;border:solid 1px #CCC;"/></div>
       <div class="bgyp2_pb_le_zi" style="width:197px; height:122px; margin-left:15px; margin-top:5px; text-align:left; float:left; line-height:20px;"><a href='leibiexiangxi.aspx?CSid=<%#Eval("CSID") %>&CSname=<%#Eval("CSname") %>' class="hui"><font class="style2lan14"><%#Eval("CSname") %></font></a><br/>
           <asp:Repeater ID="RPSecondType1" runat="server">
           <ItemTemplate>
            <font class="style2hui12"><a href="leibiexiangxichanpin.aspx?CSid=<%#Eval("CSID") %>" class="hui"> <%#Eval("CSname") %></a> | </font>
            </ItemTemplate>
           </asp:Repeater>
           </div>
       </div>
       </ItemTemplate>
       </asp:Repeater>
        </asp:Panel>
       /// <summary>
        /// 当repeater数据绑定事件激发时给二级repeater绑定数据
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void RPFirstType1_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
            {
                Repeater rp = e.Item.FindControl("RPSecondType1") as Repeater;
                DataRowView drv = (DataRowView)e.Item.DataItem;
                string csname = drv["CSname"].ToString();
                rp.DataSource = cb.GetType1(csname);
                try
                {
                    rp.DataBind();
                }
                catch (Exception nn)
                {
                    Console.WriteLine(nn.Message);
                }
            }
        }这是我写的一个可以正常运行的方法,你对比下看看。
      

  2.   

    RPFirstType1_ItemDataBound事件里findcontrol然后再绑定.
      

  3.   

    在if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    这加个断点调试下
      

  4.   

    你在绑定第一个Repeater时return DataSet或DataTable看下。
      

  5.   

    你是在headeritem里面绑定的子repeater在绑定事件中
    你的条件却是if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)当然没有反映了。
    改成
    if (e.Item.ItemType == ListItemType.Header)