В моем настольном приложении WPF 4 у меня есть запрос LINQ, который выполняет соединение с двумя таблицами.
Вот код функции, которая возвращает результаты запроса LINQ:
public IList GetTableData()
{
IList dataList = (from dWorker in App.glidusContext.tbl_workers
join d2 in App.glidusContext.tbl_workers_has_tbl_events
on dWorker.workerID equals d2.workerID
where dWorker.workerTZ == strSplit
select new { dWorker, d2 }).ToList();
return data list;
}
Теперь все, что мне остается сделать - это привязать данные этого запроса LINQ к DataGrid
:
private IList currentData; //class property
public void AssignTableContentToDataContext()
{
currentData = GetTableData();
this.ContentDataGrid.DataContext = currentData;
}
А вот XAML-код DataGrid:
<DataGrid x:Name="ContentDataGrid"
Style="{StaticResource Body_Content_DataGrid}"
CellStyle="{StaticResource Body_Content_DataGrid_Centering}"
ItemsSource="{Binding}"
KeyboardNavigation.TabIndex="8" SelectionChanged="ContentDataGrid_SelectionChanged" DataContext="{Binding}">
<!-- PreviewKeyDown="DBRecord_Delete_PreviewKeyDown" -->
<!-- CellEditEnding="ContentDataGrid_CellEditEnding" -->
<DataGrid.Columns>
<DataGridTextColumn Header="{x:Static res:Resources.WinSafetyByEmployee_DataGrid_ColHead_WorkerID}"
Width="130"
IsReadOnly="True"
Binding="{Binding Path=workerID}" />
<DataGridTextColumn Header="{x:Static res:Resources.WinSafetyByEmployee_DataGrid_ColHead_workerTZ}"
Width="130"
Binding="{Binding Path=workerTZ}" />
<DataGridTextColumn Header="{x:Static res:Resources.WinSafetyByEmployee_DataGrid_ColHead_WorkerFirstName}"
Width="130"
Binding="{Binding Path=workerFirstName}" />
<DataGridTextColumn Header="{x:Static res:Resources.WinSafetyByEmployee_DataGrid_ColHead_WorkerLastName}"
Width="130"
Binding="{Binding Path=workerLastName}" />
<DataGridTextColumn Header="{x:Static res:Resources.WinSafetyByEmployee_DataGrid_ColHead_EventID}"
Width="130"
Binding="{Binding Path=eventID}" />
<DataGridTextColumn Header="{x:Static res:Resources.WinSafetyByEmployee_DataGrid_ColHead_EventName}"
Width="*"
Binding="{Binding Path=eventName}" />
</DataGrid.Columns>
</DataGrid>
После отладки я получил следующие результаты:
- Мой запрос возвращает строки с результатами
- Мой
DataGrid
показывает строки в соответствии с количеством строк в результате запроса, но онипусто!
Так как мне связать эти данные и показать их в DataGrid
?
PS В случае более простого запроса, например select * from _table_
, все работает нормально и DataGrid
показывает данные, но когда я использую более сложные запросы с более чем одной таблицей (make join), я не могу правильно связать их с данными.