将多个DataSource绑定到单个ListView

时间:2014-10-30 20:59:54

标签: c# asp.net linq

我有一个包含两个表的数据库,UserImage

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,我需要有用户名。

我要问的是,如何将UserImage表绑定到同一个列表视图,以便我可以从两个表中访问属性?

请注意,当两个表都使用ID值作为主键时,它需要知道我引用的表ID列。

2 个答案:

答案 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. }