请教这个问题该怎么解决,谢谢了~
有一个数据表table1的数据结构如下:
classID Name Age
1 张三 19
1 李四 20
1 王五 18
2 Lisa 23
2 赵六 32
3 Vis 25
请教如果在 DataGrid 控件中要如下显示,该怎么实现呢?谢谢了!
classID Name Age
1
张三 19
李四 20
王五 18
2 Lisa 23
赵六 32
3 Vis 25
[解决办法]
第二个Repeater少了FooterTemplate了,不好意思,补上
<asp:Repeater ID="rpt" runat="server" OnItemDataBound="rpt_ItemDataBound"> <HeaderTemplate> <table> </HeaderTemplate> <ItemTemplate> <tr> <td> 班级编号:<%#Eval("classID ")%> </td> </tr> <tr> <td> <asp:Repeater ID="rpt2" runat="server"> <HeaderTemplate> <table> </HeaderTemplate> <ItemTemplate> <tr> <td> <%#Eval("Name")%> </td> <td> <%#Eval("Age")%> </td> </tr> </ItemTemplate> <FooterTemplate> </table> </FooterTemplate> </asp:Repeater> </td> </tr> </ItemTemplate> <FooterTemplate> </table> </FooterTemplate></asp:Repeater>public void Page_Load(object sender,EventArgs e){ if(!IsPostBack) { using(SqlConnection con = new SqlConnection("Data Source=.;uid=sa;pwd=sa;Database=NorthWind")) { string strSQL = "select classID from table1 group by classID"; //按组获取各个班级编号 SqlDataAdapter da= new SqlDataAdapter(strSQL,con); DataSet ds = new DataSet(); da.Fill(ds); this.rpt.DataSource = ds; this.rpt.DataBind(); } }}protected void rpt_ItemDataBound(object sender, RepeaterItemEventArgs e){ if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { Repeater rpt = (Repeater)e.Item.FindControl("rpt2"); //找到分类Repeater关联的数据项 DataRowView drv = (DataRowView)e.Item.DataItem; //提取班级ID int classId= Convert.ToInt32(drv["classID"]); //根据班级ID查询该班级下的所有学生,并绑定到第二个Repeater中 using(SqlConnection con = new SqlConnection("Data Source=.;uid=sa;pwd=sa;Database=NorthWind")) { string strSQL = "select Name,Age from table1 where classID="+classId; //获取各个班级下的学生信息 SqlDataAdapter da= new SqlDataAdapter(strSQL,con); DataSet ds = new DataSet(); da.Fill(ds); rpt.DataSource = ds; rpt.DataBind(); } }}