repeater嵌套问题,下面代码块是绑定嵌套repeater,这个是所有数据都循环绑定出来了,
我想要的是special数据全部绑定,spec_sun接收一个special的id,显示出当前子数据;其他spec_sun不绑定<asp:Repeater ID="special" runat="server" OnItemDataBound="special_ItemDataBound">
<ItemTemplate>
    <div class="newsbt text bold"><a href="sal.aspx?typeid=<%#Eval("id") %>"><%#Eval("typename") %></a></div>
    <asp:Repeater ID="spec_sun" runat="server">
        <ItemTemplate>
            <div class="newsli text"><a href="salists.aspx?typeid=<%#Eval("id") %>"><%#Eval("typename") %></a></div>
        </ItemTemplate>
    </asp:Repeater>
</ItemTemplate>
</asp:Repeater>
    protected void special_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {
            Repeater dt = (Repeater)e.Item.FindControl("spec_sun");
            DataRowView rowv = (DataRowView)e.Item.DataItem;
            int mainID = Convert.ToInt32(rowv["id"]);            DataTable _dt = DST(mainID);
            if (_dt != null)
            {
                dt.DataSource = _dt;
                dt.DataBind();
            }
        }
    }

解决方案 »

  1.   

    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
            {
                Repeater dt = (Repeater)e.Item.FindControl("spec_sun");
                DataRowView rowv = (DataRowView)e.Item.DataItem;
                int mainID = Convert.ToInt32(rowv["id"]);
                if(mainID == 特殊id)
                  {
                 DataTable _dt = DST(mainID);
                 if (_dt != null)
                 {
                    dt.DataSource = _dt;
                    dt.DataBind();
                 }
                }
            }
      

  2.   

    <td height="100%"  valign="top" style="width: 183px">
    <!--#############################开始#############################-->
    <asp:repeater id="rptModLevel1" runat="server">
    <itemtemplate>
    <table width="178" border="0" align="center" cellpadding="0" cellspacing="0">
    <tr>
    <td width="178" align="left" background="images/meun_bg.gif" height="22" style="text-indent:32px;"><a href='main.aspx'  target="mainFrame" onClick="showObj( <%# GetNextNum()%> )" title='<%# DataBinder.Eval(Container.DataItem, "series_name")%>'><font color="#023284"><%# SubString(DataBinder.Eval(Container.DataItem, "series_name").ToString(),9)%></font></a></td>

    </tr>
    </table>
    <table width="178" height="4" border="0" align="center" cellpadding="0" cellspacing="0">
    <tr>
    <td></td>
    </tr>
    </table>
    <div id="odiv" style="DISPLAY:none">
    <table width="143" height="24" border="0" align="center" cellpadding="0" cellspacing="0">
    <asp:repeater id="rptModLevel2" runat="server" DataSource='<%# ((DataRowView)Container.DataItem).CreateChildView("Level1Level2Ralation") %>'>
    <itemtemplate>
    <tr>
    <td height="22" valign="bottom" align="left" background="images/s_bg.gif" onmouseover="this.background='images/s_bg02.gif'"  onmouseout="this.background='images/s_bg.gif'" style="font-size:12px; text-indent:20px;"><a href='main.aspx' onclick="OpenFullSizeWindow('main_desk.aspx?SeriesId=<%# DataBinder.Eval(Container.DataItem, "series_id")%>&handbookid=<%# DataBinder.Eval(Container.DataItem, "handbook_id")%>','');return false" target="mainFrame" title='<%# DataBinder.Eval(Container.DataItem, "handbook_name")%>'><%# SubString(DataBinder.Eval(Container.DataItem, "handbook_name").ToString(), 9)%></a></td>
    </tr>
    <tr>
    <td height="1" ></td>
    </tr>
    </itemtemplate>
    </asp:repeater>
    </table>
    <table width="100" height="6" border="0" align="center" cellpadding="0" cellspacing="0">
    <tr>
    <td></td>
    </tr>
    </table>
    </div>
    </itemtemplate>
    </asp:repeater>
    <!--#############################结束#############################-->
    <div id="odiv" style="DISPLAY:none"></div>
    </td>function showObj(num) {
      
      if (odiv[num].style.display=="none") {
        hideAll();
        odiv[num].style.display="inline";
      }
      else {
        odiv[num].style.display="none";
      }}