将多个DataSource绑定到单个ListView
本文关键字:单个 ListView 绑定 DataSource | 更新日期: 2023-09-27 18:28:27
我有一个包含两个表的数据库,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();
现在,当我想从images表中检索值时,这很好,但正如您在上面看到的,我有"Uploaded by",然后是用户ID,我需要在那里有用户名。
我要问的是,如何将User
和Image
表绑定到同一个listview,以便访问这两个表的属性?
请记住,由于两个表都使用ID
值作为主键,因此需要知道我引用的是哪个表的ID列。
不能将两个数据源分配给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. }