比如,有两个表,班级表、学生表
班级表
班级ID 班级名
1      一班学生表
学生ID 学生名 所在班级
111    aaa     1
在GridView里显示查询学生的结果,是这样显示的班级 学生
1    2222
1    111
2    aaa但客户想显示成
班级1
有学生:2222 1111
班级2
有学生:aaa....

解决方案 »

  1.   


          DataTable dt1 = new DataTable();      dt1.Columns.Add("班级", typeof(string));
          dt1.Columns.Add("有学生", typeof(int));
          dt1.PrimaryKey = new DataColumn[] { dt1.Columns[0], dt1.Columns[1], dt1.Columns[2] };
          dt1.Rows.Add("班级1", 1,);
          DataTable dt2 = new DataTable();
          dt2.Columns.Add("班级", typeof(string));
          dt2.Columns.Add("有学生", typeof(string));
          dt2.PrimaryKey = new DataColumn[] { dt2.Columns[0], dt2.Columns[1], dt2.Columns[2] };
          dt2.Rows.Add("班级2", 2, );      DataTable dt3 = dt1.Copy();
          dt3.Merge(dt2);
      

  2.   

    GridView嵌套模板列就可以实现,外层GridView绑定班级表的班级名称,里层根据外层的每一个班级的ID来获取所有的学生,就可以搞定了。
      

  3.   

    两张表关联查询。
    带一个count 属性inner join 
    然后显示出来就行了。
      

  4.   


    程序代码如下:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:Repeater ID="rpt" runat="server" onitemdatabound="rpt_ItemDataBound">
                <HeaderTemplate>
                    <table border="1">
                </HeaderTemplate>
                <ItemTemplate>
                    <tr>
                        <td>
                            <asp:Label ID="lbGrade" runat="server" Text='<%#Eval("班级名") %>'></asp:Label>
                        </td>
                    </tr>
                    <tr>
                        <td>
                            <asp:Repeater ID="rpt2" runat="server">
                                <HeaderTemplate>
                                    <table border="1">
                                        <tr>
                                </HeaderTemplate>
                                <ItemTemplate>
                                       <td>
                                            <asp:Label ID="lbStuName" runat="server" Text='<%#Eval("学生名") %>'></asp:Label>
                                    </td>
                                </ItemTemplate>
                                <FooterTemplate>
                                    </tr> </table>
                                </FooterTemplate>
                            </asp:Repeater>
                        </td>
                    </tr>
                </ItemTemplate>
                <FooterTemplate>
                    </table>
                </FooterTemplate>
            </asp:Repeater>
        </div>
        </form>
    </body>
    </html>
    public partial class WebForm1 : System.Web.UI.Page
        {
            private int i = 0;        protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    BindFirstRepeater();//绑定外层Repeater,显示班级
                }
            }        /// <summary>
            /// 绑定外层Repeater,显示班级
            /// </summary>
            public void BindFirstRepeater()
            {
                DataSet ds = new DataSet();
                using (SqlConnection con = new SqlConnection("Data Source=localhost;uid=sa;pwd=saiyang;Database=CSDN"))
                {
                    con.Open();
                    string strSQL = "select * from 班级表 ";
                    using (SqlDataAdapter adapter = new SqlDataAdapter(strSQL, con))
                    {
                        adapter.Fill(ds);
                    }
                }
                this.rpt.DataSource = ds;
                this.rpt.DataBind();
            }        /// <summary>
            /// 
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            protected void rpt_ItemDataBound(object sender, RepeaterItemEventArgs e)
            {
                if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
                {
                    DataRowView drv = (DataRowView)e.Item.DataItem;
                    Repeater repeater = (Repeater)e.Item.FindControl("rpt2");                DataSet ds = new DataSet();
                    using (SqlConnection con = new SqlConnection("Data Source=localhost;uid=sa;pwd=saiyang;Database=CSDN"))
                    {
                        con.Open();
                        string strSQL = "select * from 学生表 where 所在班级="+int.Parse(drv["班级ID"].ToString());
                        using (SqlDataAdapter adapter = new SqlDataAdapter(strSQL, con))
                        {
                            adapter.Fill(ds);
                        }
                    }
                    repeater.DataSource = ds;
                    repeater.DataBind();
                    //触发内层Repeater的ItemDataBound事件
                    repeater.ItemDataBound += new RepeaterItemEventHandler(repeater_ItemDataBound);
                }
            }        void repeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
            {
                //每行显示8个学生,可以根据需要进行调整
                if (i % 8 == 0 && i > 0)
                {
                    e.Item.Controls.Add(new LiteralControl("</tr><tr>"));
                }
                i++;
            }
        }
      

  5.   

    <asp:DataList ID="DL" runat="server" Width="100%">
            <ItemTemplate>
                 <table border="0" cellpadding="2" cellspacing="0" width="100%">
                     <tr>
                         <td class="lblReportTitleH2" align="left" style="width: 70%">
                            <asp:Label ID="lblReturnable" runat="server" Text=' <%#Eval("ClassName")%>'></asp:Label>
                         </td>
                     </tr>
                     <tr>
                         <td>
                            <asp:Label ID="lblReturnable" runat="server" Text=' <%#Eval("Students")%>'></asp:Label>
                         </td>
                     </tr>
                 </table>
            </ItemTemplate>
    </asp:DataList>
    把一个DataList当作一条Gridview的记录来显示
      

  6.   

    最简单的用sql做出效果.gridview直接显示.
    很简单的!