先看代码吧<table width="95%" class="mytable" border="1" bordercolor="#B8D0D6" style="border-collapse:collapse; margin:5px">
<tr>
<td style="text-align:center">宿舍位置</td>
<td style="text-align:center">宿舍类型</td>
<td style="text-align:center">人数</td>
<td style="text-align:center">满员</td>
<td style="text-align:center">学生</td>
<td style="text-align:center">操作</td>
</tr>
<asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_OnItemDataBound">
<ItemTemplate>
<tr class="overandout">
<td>
<asp:Label ID="DomName" runat="server" Text="Label"></asp:Label></td>
<td>
<asp:Label ID="DomType" runat="server" Text="Label"></asp:Label></td>
<td>
<asp:Label ID="DomCount" runat="server" Text="Label"></asp:Label></td>
<td>
<asp:Label ID="DomFull" runat="server" Text="Label"></asp:Label></td>
<td>
<asp:HyperLink ID="DomStu" runat="server">HyperLink</asp:HyperLink></td>
<td></td>
</tr>
</ItemTemplate>
</asp:Repeater>
</table>using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;public partial class Dormitory_Manager : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Repeater1_Bind();
}
}
DataClassesDataContext DC = new DataClassesDataContext();
protected void Repeater1_Bind()
{
var result = from s in DC.宿舍
join r in DC.宿舍人 on s.id equals r.宿舍 into g
select new
{
DomName = s.位置,
DomType = s.男女,
DomCount = s.人数,
DomID = s.id,
DomStu = g.ToList()
};
Repeater1.DataSource = result;
Repeater1.DataBind();
}
protected void Repeater1_OnItemDataBound(object sender, RepeaterItemEventArgs e)
{
Label DomName = (Label)e.Item.FindControl("DomName");
DomName.Text = DataBinder.Eval(e.Item.DataItem, "DomName").ToString();
Label DomType = (Label)e.Item.FindControl("DomType");
DomType.Text = DataBinder.Eval(e.Item.DataItem, "DomType").ToString();
Label DomCount = (Label)e.Item.FindControl("DomCount");
DomCount.Text = DataBinder.Eval(e.Item.DataItem, "DomCount").ToString();
HyperLink DomStu = (HyperLink)e.Item.FindControl("DomStu");
DomStu.Text = DataBinder.Eval(e.Item.DataItem, "DomStu[0].姓名").ToString();
}
}在CS里,
DomStu.Text = DataBinder.Eval(e.Item.DataItem, "DomStu[0].姓名").ToString();
这里是查询出宿舍人里的第一条记录,可是问题是我宿舍人里不止一个人在某个宿舍里,如果让所有的宿舍人都列出来呢?
<tr>
<td style="text-align:center">宿舍位置</td>
<td style="text-align:center">宿舍类型</td>
<td style="text-align:center">人数</td>
<td style="text-align:center">满员</td>
<td style="text-align:center">学生</td>
<td style="text-align:center">操作</td>
</tr>
<asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_OnItemDataBound">
<ItemTemplate>
<tr class="overandout">
<td>
<asp:Label ID="DomName" runat="server" Text="Label"></asp:Label></td>
<td>
<asp:Label ID="DomType" runat="server" Text="Label"></asp:Label></td>
<td>
<asp:Label ID="DomCount" runat="server" Text="Label"></asp:Label></td>
<td>
<asp:Label ID="DomFull" runat="server" Text="Label"></asp:Label></td>
<td>
<asp:HyperLink ID="DomStu" runat="server">HyperLink</asp:HyperLink></td>
<td></td>
</tr>
</ItemTemplate>
</asp:Repeater>
</table>using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;public partial class Dormitory_Manager : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Repeater1_Bind();
}
}
DataClassesDataContext DC = new DataClassesDataContext();
protected void Repeater1_Bind()
{
var result = from s in DC.宿舍
join r in DC.宿舍人 on s.id equals r.宿舍 into g
select new
{
DomName = s.位置,
DomType = s.男女,
DomCount = s.人数,
DomID = s.id,
DomStu = g.ToList()
};
Repeater1.DataSource = result;
Repeater1.DataBind();
}
protected void Repeater1_OnItemDataBound(object sender, RepeaterItemEventArgs e)
{
Label DomName = (Label)e.Item.FindControl("DomName");
DomName.Text = DataBinder.Eval(e.Item.DataItem, "DomName").ToString();
Label DomType = (Label)e.Item.FindControl("DomType");
DomType.Text = DataBinder.Eval(e.Item.DataItem, "DomType").ToString();
Label DomCount = (Label)e.Item.FindControl("DomCount");
DomCount.Text = DataBinder.Eval(e.Item.DataItem, "DomCount").ToString();
HyperLink DomStu = (HyperLink)e.Item.FindControl("DomStu");
DomStu.Text = DataBinder.Eval(e.Item.DataItem, "DomStu[0].姓名").ToString();
}
}在CS里,
DomStu.Text = DataBinder.Eval(e.Item.DataItem, "DomStu[0].姓名").ToString();
这里是查询出宿舍人里的第一条记录,可是问题是我宿舍人里不止一个人在某个宿舍里,如果让所有的宿舍人都列出来呢?
加载一行数据,进一次。看看加载了几次。
var result = from s in DC.宿舍
select new
{
DomName = s.位置,
DomType = s.男女,
DomCount = s.人数,
DomID = s.id,
DomStu = string.Join(",", DC.宿舍人.Where(r=>r.宿舍==s.id).Select(r=>r.姓名).ToArray())
};