我想用2个datalist实现类似以下的嵌套(ASP。NET 2.0 C#),该如何实现:      项目1          
        子项目1
        子项目2
        子项目3
     项目2
        子项目1
        子项目2
表1的结构
xm         id(主键)
项目1       1
项目2       2表2的结构
zxm      id(主键)  xmid(与表1的id 对应)
子项目1    1         1
子项目2    2         1
子项目3    3         1
子项目1    4         2
子项目2    5         2

解决方案 »

  1.   

    在父datalist databind绑定事件中绑定子datalist数据
      

  2.   


    private void DataListOne_ItemDataBound(object sender, System.Web.UI.WebControls.DataListItemEventArgs e)
    {
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)  
    {
    DataList DataListTwo = (DataList)e.Item.FindControl("DataListTwo");
    DataRowView rowv = (DataRowView)e.Item.DataItem; 
    string name =rowv["name"].ToString();
    DataSet ds = dAOWeb_Subject.GetSubjectByName(name);
    if(ds.Tables[0].Rows.Count>0)
    {
    DataListTwo.DataSource=ds;
    DataListTwo.DataBind();
    }
    }
    }
      

  3.   

    <asp:DataList ID="DataList1" runat="server">
                <ItemTemplate>
                   <table>
                    <tr>
                    <td><%#Eval("id") %></td>
                      <td><%#Eval("xm") %></td>
                    </tr>
                    <tr>
                    <td colspan="2">
                    <asp:DataList ID="DataList2" runat="server">
                    <ItemTemplate>
                    <table>
                    <tr>
                    <td><%#Eval("zxm") %></td>
                    <td><%#Eval("id") %></td>
                    <td><%#Eval("xmid") %></td>
                    </tr>
                    </table>
                    </ItemTemplate>
                    </asp:DataList>
                    </td>
                   
                    </tr>
                   </table>
                </ItemTemplate>
            </asp:DataList>
    这样在.aspx.cs中
    datalist1.DataSource=表1;
     datalist1.DataBind();
    datalist2.DataSource=表2;
     datalist2.DataBind();
    这样可以了