我有一个包含两个表的数据库,User
和Image
。
User
包含字段ID(主键)和用户名
Images
包含字段ID
(主键),UserID
(链接到User.ID
的外键)和ImageTitle
我有一个ListView,其中包含这些值的ASP控件
<h1><%#Eval ("ImageTitle") %></h1>
<h4 id="authorText">Uploaded by <%#Eval ("UserID") %></h4>
在我的代码后面,我有这个代码来绑定数据:
DataClasses1DataContext PiccyPic = new DataClasses1DataContext();
var images = from i in PiccyPic.Images
select i;
lvwImages.DataSource = images;
lvwImages.DataBind();
现在,当我想从图像表中检索值时,这可以正常工作,但正如您在上面看到的那样,我已经&#34;上传了&#34;然后是用户ID,我需要有用户名。
我要问的是,如何将User
和Image
表绑定到同一个列表视图,以便我可以从两个表中访问属性?
请注意,当两个表都使用ID
值作为主键时,它需要知道我引用的表ID列。
答案 0 :(得分:1)
您无法将两个数据源分配给ListView。因此,您有责任将两个数据源收集到结果集中。您可以使用存储过程或C#代码创建一个带有两个数据集的数据集。以下是存储过程的示例,如果您需要c#代码,请告诉我
您可以创建使用Field
返回单个DataTable的存储过程(Join SQL Query)SELECT USer.UserID,UserName,ImageId,ImageTitle 来自USer内部连接图像 ON user.userid = images.userid
然后将此数据表用作ListView的DataSource
答案 1 :(得分:0)
您需要加入。
问题中没有足够的信息可以为您完整答案,但您应该能够从这篇MSDN文章中找出语法: http://msdn.microsoft.com/en-us/library/bb397941.aspx
我怀疑新查询看起来像这样,但不知道你的课程是如何设置的,很难说。
var images = from i in PiccyPic.Images
join user in PiccyPic.Users on i.UserId equals user.Id
select new { property1 = i.Property1, property2 = user.Property2, etc. }