aspx代码
 <div>
      <dl>
          <asp:Repeater ID="repLevOne" runat="server">
         <ItemTemplate>
         <dt><%# DataBinder.Eval(Container, "DataItem.name").ToString()%></dt>
             <asp:Repeater ID="repLevTwo" runat="server">
              <ItemTemplate>
              <dd><%# DataBinder.Eval(Container, "DataItem.name").ToString()%></dd>
               <dd>
                   <asp:Repeater ID="repLevThree" runat="server">
                     <ItemTemplate>
                      <span><%# DataBinder.Eval(Container, "DataItem.name").ToString()%></span>
                     </ItemTemplate>
                   </asp:Repeater>
               </dd>
              </ItemTemplate>
             </asp:Repeater>        
          </ItemTemplate>
        </asp:Repeater>
       </dl>
    </div>.cs代码
database dbObj = new database();
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
            BdingLev();
    }
 public void BdingLev()
    {    
        string sqlstrOne = "select id, name, ParentID, typelevel from tb_LevCat where typelevel = 1 and ParentID = 0 and name is not null order by id asc";
        string sqlstrTwo = "select id, name, ParentID, typelevel from tb_LevCat where typelevel = 2 and ParentID in (select id from Categories where typelevel =1 and ParentID =0 and name is not null) and name is not null order by id asc";
        string sqlstrThree = "select id, name, ParentID, typelevel from tb_LevCat where typelevel = 3 and ParentID in (select id from Categories where typelevel= 2 and name is not null) and name is not null order by id asc";
        
        DataSet ds = new DataSet("Data");
        SqlConnection con = dbObj.Getconnection();     //数据库连接,写好的类
        SqlCommand cmd = new SqlCommand(sqlstrOne, con);
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        cmd.Connection.Open();
        da.Fill(ds, "One");        SqlDataAdapter da2 = new SqlDataAdapter(sqlstrTwo, con);
        da2.Fill(ds, "Two");        SqlDataAdapter da3 = new SqlDataAdapter(sqlstrThree, con);
        da3.Fill(ds, "Three");        ds.Relations.Add("smallFun", ds.Tables["One"].Columns["id"], ds.Tables["Two"].Columns["ParentID"]);
        ds.Relations.Add("small2Fun", ds.Tables["Two"].Columns["id"], ds.Tables["Three"].Columns["ParentID"]);        repLevOne.DataSource = ds.Tables["One"].DefaultView;
        repLevOne.DataBind();
        cmd.Connection.Close();
    }
是一个目录的三级,但是为什么只能显示出一级目录,二级三级的都无法显示

解决方案 »

  1.   

    后面两 repeater 没用调用 DataBind 么?
      

  2.   

    在上级Repeater的ItemDataBound事件中给下级Repeater绑定数据
      

  3.   

    什么意思。不是已经用Relations关系了三个的关系吗。
    不用ItemDataBound事件。
      

  4.   

    Relations的确是做了关联,但Repeater没用DataBind()是不会Render Html的。
      

  5.   

    本帖最后由 Sandy945 于 2011-11-12 15:30:18 编辑
      

  6.   

    对头,没注意到给repeater 添加DataSource。
      

  7.   

    http://topic.csdn.net/u/20111109/16/bca4bae5-2003-4e43-ada7-260e812dd333.html
    谁能帮忙看下我这贴得问题吗!!
      

  8.   

    上面的问题我已经解决
    <asp:Repeater ID="repLevTwo" runat="server" DataSource='<%# DataBinder.Eval(Container, "DataItem.smallFun") %>'>
    就好了
      

  9.   

    我找到之前的帖子了http://topic.csdn.net/u/20080430/14/87278029-cfa2-4ed2-b008-394e575c4ce9.html