将多个DataSource绑定到单个ListView

本文关键字:单个 ListView 绑定 DataSource | 更新日期: 2023-09-27 18:28:27

我有一个包含两个表的数据库,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();

现在,当我想从images表中检索值时,这很好,但正如您在上面看到的,我有"Uploaded by",然后是用户ID,我需要在那里有用户名。

我要问的是,如何将UserImage表绑定到同一个listview,以便访问这两个表的属性?

请记住,由于两个表都使用ID值作为主键,因此需要知道我引用的是哪个表的ID列。

将多个DataSource绑定到单个ListView

不能将两个数据源分配给ListView。因此,您有责任将这两个数据源收集到结果集中。您可以使用存储过程或C#代码创建一个具有两个数据集的数据集。以下是存储过程的示例,如果您需要c#代码,请告诉我

您可以创建存储过程(Join SQL Query),该过程返回带有字段的单个DataTable

SELECT USer.UserID、UserName、ImageId、ImageTitleFROM USer内部连接图像ON user.userid=images.userid

然后使用此数据表作为ListView 的DataSource

您需要一个联接。

这个问题中没有足够的信息来完全回答您,但您应该能够从这篇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. }