【发布时间】:2011-08-27 21:37:51
【问题描述】:
我正在尝试使用 LINQ 在我的 GridView 中绑定数据。
在我的 Service.cs 文件中,我有一个获取特定登录用户条目的方法:
public List<tidsregistrering> ShowTidregistreringer()
{
var CurrentMedarbejder = FindUser(HttpContext.Current.Session["email"].ToString());
var tempList = (from t in kdc.tidsregistrerings
join p in kdc.projekts on t.projektid equals p.id
join k in kdc.kundes on t.kundeid equals k.id
join o in kdc.øvriges on t.øvrigeid equals o.id
where t.medarbejderid == CurrentMedarbejder.id
select t).ToList();
return tempList;
}
kdc 是我的 DataContext。我尝试将不同的表连接在一起,但我的 GridView 中没有显示任何数据。如果我省略连接,我会得到数据......在我的其他表中,我有一个名为navn(名称)的列。我希望在我的 GridView 中使用该名称 printet 而不是外键引用...
我的 GridView:
<asp:GridView ID="GridView1" runat="server">
<Columns>
<asp:BoundField DataField="tidsforbrug" HeaderText="Tidsforbrug" />
<asp:BoundField DataField="dato" HeaderText="Dato" />
<asp:BoundField DataField="<%# Bind("projekt.id") %>" HeaderText="Projekt" />
<asp:BoundField DataField="<%# Bind("kunde.id") %>" HeaderText="Kunde" />
<asp:BoundField DataField="<%# Bind("øvrige.id") %>" HeaderText="Øvrigt" />
<asp:BoundField DataField="done" HeaderText="Done" />
</Columns>
</asp:GridView
我的绑定发生在 Page_load:
GridView1.DataSource = service.ShowTidregistreringer();
GridView1.DataBind();
我该怎么做?
编辑: 到目前为止,这是我的清单...而且我希望将 projektid、kundeid 和 øvrigeid 中的这些数字与我的外键表连接起来。
*编辑2:** 为了更好地衡量,这是我的数据库表的创建方式:
CREATE TABLE chef(
id int identity primary key,
email varchar(100) unique not null,
password char(100) not null,
navn varchar(100) not null
);
CREATE TABLE medarbejder(
id int identity primary key,
email varchar(100) unique not null,
password char(100) not null,
navn varchar(100) not null,
chefid int foreign key references chef(id)
);
CREATE TABLE projekt(
id int identity primary key,
navn varchar(50) not null,
beskrivelse varchar(255) not null
);
CREATE TABLE kunde(
id int identity primary key,
navn varchar(50) not null,
beskrivelse varchar(255) not null
);
CREATE TABLE øvrige(
id int identity primary key,
navn varchar(50) not null,
);
CREATE TABLE tidsregistrering(
id int identity primary key,
tidsforbrug float,
dato datetime,
projektid int foreign key references projekt(id),
kundeid int foreign key references kunde(id),
øvrigeid int foreign key references øvrige(id),
medarbejderid int foreign key references medarbejder(id) not null,
done bit
);
编辑3: 我已将我的 LINQ 查询重新制作为:
List<tidsregistrering> tempList = (from t in kdc.tidsregistrerings
join p in kdc.projekts on t.projektid equals p.id into p_t
join k in kdc.kundes on t.kundeid equals k.id into k_t
join o in kdc.øvriges on t.øvrigeid equals o.id into o_t
from k in k_t.DefaultIfEmpty()
from p in p_t.DefaultIfEmpty()
from o in o_t.DefaultIfEmpty()
where t.medarbejderid == CurrentMedarbejder.id
select t).ToList();
但它仍然没有选择加入的内容...
【问题讨论】:
标签: c# asp.net linq gridview datasource