如何在单个datagridview wpf linq中绑定四个表
Posted
技术标签:
【中文标题】如何在单个datagridview wpf linq中绑定四个表【英文标题】:how to bind four tables in single datagridview wpf linq 【发布时间】:2019-10-23 01:37:56 【问题描述】:我有一个 datagridview,我想将它与连接的四个表绑定 彼此和照片解释了关系 relations of four tables
我尝试将它与 wpf 绑定,但我不能 我的 loadData 代码是:
CollegeContext cd = new CollegeContext();
var query = (from sc in cd.StudentStatments
join l in cd.Levels on sc.IdLevel equals l.Id
join b in cd.Branches on sc.IdBranch equals b.Id
join su in cd.Subjects on sc.IdSubject equals su.Id
select new DGItem
NameSub = su.Name,
TypeOfBranch = b.TypeOfBranch,
Code = su.Code,
NameLev=l.Name,
NumOfStudent = sc.NumberOfStudent
).ToList();
studentStatmentsDataGrid.ItemsSource = query;
我的 xaml 是:
<DataGrid x:Name="studentStatmentsDataGrid" AutoGenerateColumns="False" FlowDirection="RightToLeft" EnableRowVirtualization="True" ItemsSource="Binding " Margin="128,284,0,0" RowDetailsVisibilityMode="VisibleWhenSelected">
<DataGrid.Columns>
<DataGridTextColumn Binding="Binding Subject.Name" Header="NameSubjects" Width="SizeToHeader"/>
<DataGridTextColumn Binding="Binding TypeOfBranch" Header=" Branch" Width="SizeToHeader"/>
<DataGridTextColumn Binding="Binding Code" Header=" code" Width="SizeToHeader"/>
<DataGridTextColumn Binding="Binding Levels.Name" Header=" Level" Width="SizeToHeader"/>
<DataGridTextColumn Binding="Binding NumberOfStudent" Header="NumberOfStudent" Width="SizeToHeader"/>
</DataGrid.Columns>
</DataGrid>
和我的用户控制资源:
<UserControl.Resources>
<Color x:Key="1">#FF3580BF</Color>
<Color x:Key="Color1">#FFECE3E3</Color>
<Color x:Key="Color2">#FF3580BF</Color>
<Astmara6:Branches x:Key="branches"/>
<CollectionViewSource x:Key="branchesViewSource" Source="Binding _Branches, Source=StaticResource branches"/>
<Astmara6:Section x:Key="section"/>
<CollectionViewSource x:Key="sectionsViewSource" Source="Binding Sections, Source=StaticResource section"/>
<Astmara6:Levels x:Key="levels"/>
<CollectionViewSource x:Key="levelsViewSource" Source="Binding _Levels, Source=StaticResource levels"/>
<Astmara6:Subjects x:Key="subjects"/>
<CollectionViewSource x:Key="subjectsViewSource" Source="Binding _Subjects, Source=StaticResource subjects"/>
<Astmara6:TeachSubBranch x:Key="teachSubBranch"/>
<CollectionViewSource x:Key="subjectsViewSource1" Source="Binding Subjects, Source=StaticResource teachSubBranch"/>
<Astmara6:StudentStatment x:Key="studentStatment"/>
<CollectionViewSource x:Key="studentStatmentsViewSource" Source="Binding StudentStatments, Source=StaticResource studentStatment"/>
</UserControl.Resources>
我希望在我的 datagridview 中显示 su.Name , b.TypeOfBranch ,su.Code ,l.Name, sc.NumberOfStudent 但它不会显示所有数据
【问题讨论】:
【参考方案1】:通过设置 ItemsSource=Binding,您将其绑定到 DataGrid.DataContext。当您在代码中设置值时,此绑定仍然处于活动状态 - 因此 ItemsSource 始终指向 DataContext,我假设它是空的。
您有两个选择: 从 xaml 中的 DataGrid 中删除 ItemsSource 绑定 要么 在后面的代码中设置 DataContex 而不是 ItemsSource。
【讨论】:
以上是关于如何在单个datagridview wpf linq中绑定四个表的主要内容,如果未能解决你的问题,请参考以下文章
wpf datagrid 有没有像 winforms DataGridView 这样的虚拟模式?
如何从多个数据库中收集数据并将它们绑定到单个 datagridview 中?
winform c# Datagridview 选中行 急!!!