将LINQ查询结果绑定到中继器
本文关键字:中继器 绑定 结果 LINQ 查询 | 更新日期: 2023-09-27 18:07:24
我有一个这样的查询
var businessList = (from u in _DB.Users
join cat in _DB.BusinessCategories on u.UserId equals cat.UserId
select new BusinessDetails(u.Businesses.FirstOrDefault(), u)).Skip(0).Take(10);
dlBusiness.DataSource = businessList.ToList();
dlBusiness.DataBind();
我将Businessname作为Business类的成员。我有一个如下的数据列表
<asp:DataList ID="dlBusiness" DataKeyField="UserId" runat="server" >
<ItemTemplate>
<%#Eval("Business.BusinessName")%>
</ItemTemplate>
</asp:DataList>
下面是类定义
public class BusinessDetails
{
public BusinessDetails(Business business,User user){
this._Business = business;
this._UserDetails = user;
}
private string _distance;
public string Distance
{
get { return _distance; }
set { _distance = value; }
}
private Business _Business;
public Business BusinessData
{
get { return _Business; }
set { _Business = value; }
}
private User _UserDetails;
public User UserDetails
{
get { return _UserDetails; }
set { _UserDetails = value; }
}
}
但是这个显示空白?如何将它绑定到数据列表?
我想把它改成
DataBinder.Eval(Container.DataItem, "BusinessData.BusinessName")
假定业务类具有BusinessName
属性?
我想你想要
<%#Eval("BusinessData.BusinessName")%>
代替
<%#Eval("Business.BusinessName")%>
在ItemTemplate
标签。
我不认为你有一个UserId字段在BusinessDetails
类。您应该将其替换为唯一键列名称或删除它。我看到你可以访问BussinessName
,所以访问说明符是公共的。
绑定是正确的。如果数据列表控件dlBusiness
找不到该属性,则抛出异常。问题的原因可能是businessList
返回一个空的BussinessName。