表DL里有A,B两个字段,字段A自增的
表XL里有C,D两个字段,C字段是表DL字段A的值。
两表如下关系DL表
A B
1 青春小说
2 小说XL表
C D
1 校园
1 网络
1 叛逆 
2 作品集
2 世界名著 
2 外国小说
2 中国古典小说 这样显示如何做<table>
<tr><td>青春小说<td><tr/>
<tr><td>校园</td><td>网络</td></tr>
<tr><td>叛逆</td><td></td></tr>
</table>
<table>
<tr><td>小说<td><tr/>
<tr><td>作品集</td><td>世界名著</td></tr>
<tr><td>外国小说</td><td>中国古典小说</td></tr>
</table>

解决方案 »

  1.   

    用datalist或者datagrid嵌套就可以了
      

  2.   

    父子表吧
    搜索:asp.net 父子表,很多
      

  3.   

    要的是一行里显示两数据(有两个<td>
      

  4.   

    <form id="Form1" method="post" runat="server">
    <asp:DataList id="DataList1" runat="server">
    <ItemTemplate>
    <b>
    <%# DataBinder.Eval(Container.DataItem, "B")%>
    </b>
    <br>
    <asp:DataList id="DataList2" runat="server" RepeatColumns="2">
    <ItemTemplate>
    <%# DataBinder.Eval(Container.DataItem, "D")%>
    </ItemTemplate>
    </asp:DataList>
    </ItemTemplate>
    </asp:DataList>
    </form>
    =============================================================
    public class WebForm6 : System.Web.UI.Page
    {
    protected System.Web.UI.WebControls.DataList DataList1;
    protected System.Web.UI.WebControls.DataList DataList2; private DataSet myData = null;//此行代码为手写添加的 private void Page_Load(object sender, System.EventArgs e)
    {
    // 在此处放置用户代码以初始化页面
    if(!IsPostBack)
    {
    myData = this.GetTestData();
    this.DataList1.DataSource = myData.Tables["DL"];
    this.DataList1.DataBind();
    }
    } /// <summary>
    /// 模拟一些测试数据,实际应用改为从数据库读取
    /// </summary>
    /// <returns></returns>
    private DataSet GetTestData()
    {
    DataTable dt1 = new DataTable("DL");
    dt1.Columns.Add("A");
    dt1.Columns.Add("B");
    dt1.Rows.Add(new object[]{1,"青春小说"});
    dt1.Rows.Add(new object[]{2,"小说"}); DataTable dt2 = new DataTable("XL");
    dt2.Columns.Add("C");
    dt2.Columns.Add("D");
    dt2.Rows.Add(new object[]{1,"校园"});
    dt2.Rows.Add(new object[]{1,"网络"});
    dt2.Rows.Add(new object[]{1,"叛逆"});
    dt2.Rows.Add(new object[]{2,"作品集"});
    dt2.Rows.Add(new object[]{2,"世界名著 "});
    dt2.Rows.Add(new object[]{2,"外国小说"});
    dt2.Rows.Add(new object[]{2,"中国古典小说"}); DataSet ds = new DataSet();
    ds.Tables.Add(dt1);
    ds.Tables.Add(dt2);
    ds.AcceptChanges(); return ds;
    } private void DataList1_ItemDataBound(object sender, System.Web.UI.WebControls.DataListItemEventArgs e)
    {
    if(e.Item.ItemIndex>-1)
    {
    DataRowView row = e.Item.DataItem as DataRowView;
    DataList dl = e.Item.FindControl("DataList2") as DataList;

    if(myData!=null)
    {
    string find = "[C] = '"+row["A"].ToString()+"'";
    DataView dv = myData.Tables["XL"].Copy().DefaultView;
    dv.RowFilter = find;
    dl.DataSource = dv;
    dl.DataBind();
    }
    }
    } #region Web 窗体设计器生成的代码
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
    //
    InitializeComponent();
    base.OnInit(e);
    }

    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {    
    this.DataList1.ItemDataBound += new System.Web.UI.WebControls.DataListItemEventHandler(this.DataList1_ItemDataBound);
    this.Load += new System.EventHandler(this.Page_Load); }
    #endregion
    }
      

  5.   

    更正一个小地方:<asp:DataList id="DataList2" runat="server" RepeatColumns="2" RepeatDirection="Horizontal">