private async Task <FrameworkElement> BuildChildRecordDataGrid(IReferenceDataSource dataSource, object[] keyValues, CancellationToken cancellationToken) { var executionModel = dataSource.CreateExecutionModel(keyValues); var executionResult = await _outputViewer.ConnectionAdapter.ExecuteChildStatementAsync(executionModel, cancellationToken); var childReferenceDataSources = await _outputViewer.StatementValidator.ApplyReferenceConstraintsAsync(executionResult, _outputViewer.ConnectionAdapter.DatabaseModel, cancellationToken); var resultInfo = executionResult.ResultInfoColumnHeaders.Keys.Last(); var resultSet = await _outputViewer.ConnectionAdapter.FetchRecordsAsync(resultInfo, ConfigurationProvider.Configuration.ResultGrid.FetchRowsBatchSize, cancellationToken); var childRecordDataGrid = new DataGrid { RowHeaderWidth = 0, Style = (Style)Application.Current.Resources["ResultSetDataGrid"], ItemsSource = new ObservableCollection <object[]>(resultSet) }; childRecordDataGrid.AddHandler(VirtualizingStackPanel.CleanUpVirtualizedItemEvent, (CleanUpVirtualizedItemEventHandler)CleanUpVirtualizedItemHandler); childRecordDataGrid.BeginningEdit += App.DataGridBeginningEditCancelTextInputHandlerImplementation; childRecordDataGrid.RowStyle = (Style)Resources["DataGridRowStyle"]; var columnHeaders = executionResult.ResultInfoColumnHeaders.Values.Last(); DataGridHelper.InitializeDataGridColumns(childRecordDataGrid, columnHeaders, _outputViewer.StatementValidator, _outputViewer.ConnectionAdapter); AddChildReferenceColumns(childRecordDataGrid, childReferenceDataSources); foreach (var columnTemplate in childRecordDataGrid.Columns) { columnTemplate.HeaderStyle = (Style)Application.Current.Resources["ColumnHeaderClickBubbleCancelation"]; } return(childRecordDataGrid); }
private async Task ApplyReferenceConstraints(CancellationToken cancellationToken) { var childReferenceDataSources = await _outputViewer.StatementValidator.ApplyReferenceConstraintsAsync(_executionResult, _outputViewer.ConnectionAdapter.DatabaseModel, cancellationToken); DataGridHelper.InitializeDataGridColumns(ResultGrid, ColumnHeaders, _outputViewer.StatementValidator, _outputViewer.ConnectionAdapter); AddChildReferenceColumns(ResultGrid, childReferenceDataSources); }