Я новичок в WPF и не могу отобразить мои данные из БД SQLite в сгруппированной форме. Кто-нибудь может помочь?
Моя последняя версия выдает ошибку после компиляции: object reference not set to an instance of an object
.
Я не настаиваю на использовании таблицы данных в качестве источника, мне просто нужно отображать данные из таблицы SQL сгруппированным образом. Лучшим вариантом было бы объединить два запроса, чтобы сведения о группе были получены из запроса 1, а строки данных - из запроса два. Как в таблицах SQL связаны по конкретному столбцу.
C # код ниже.
// Fired on Window_Loaded event
public void FillDataGridFromSQL()
{
SQLiteConnection oSQLiteConnection = new SQLiteConnection("Data Source=rem_test_database.db");
SQLiteCommand oCommand = oSQLiteConnection.CreateCommand();
oCommand.CommandText = "SELECT * FROM first_table";
m_oDataAdapter = new SQLiteDataAdapter(oCommand.CommandText, oSQLiteConnection);
SQLiteCommandBuilder oCommandBuilder = new SQLiteCommandBuilder(m_oDataAdapter);
m_oDataSet = new DataSet();
m_oDataAdapter.Fill(m_oDataSet);
m_oDataTable = m_oDataSet.Tables[0];
CollectionView collectionView = new CollectionView(CollectionViewSource.GetDefaultView(m_oDataTable.DefaultView));
// Line below produce exception!
collectionView.GroupDescriptions.Add(new PropertyGroupDescription("id_nieruchomosci"));
LeftDataGrid.ItemsSource = collectionView;
}
и разметка XAML:
<!-- DataGrid -->
<DataGrid Grid.Column="0" Grid.Row="2" Name="LeftDataGrid" AutoGenerateColumns="False">
<!-- Grouping style-->
<DataGrid.GroupStyle>
<GroupStyle>
<GroupStyle.ContainerStyle>
<Style TargetType="{x:Type GroupItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type GroupItem}">
<StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding id_nieruchomosci}" />
<TextBlock Text="{Binding id_nieruchomosci, StringFormat=Count: {0}}" Margin="30,0,0,0" />
</StackPanel>
<ItemsPresenter />
</StackPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</GroupStyle.ContainerStyle>
</GroupStyle>
</DataGrid.GroupStyle>
<!-- Columns Definitions -->
<DataGrid.Columns>
<DataGridTextColumn Header="id_nieruchomosci" Binding="{Binding id_nieruchomosci}" />
<DataGridTextColumn Header="id" Binding="{Binding id}" />
<DataGridTextColumn Header="frakcja" Binding="{Binding frakcja}">
</DataGridTextColumn>
<DataGridTemplateColumn Header="fld_results">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Button Content="X" Click="Button_Click"/>
<Button Content="E" Click="Button_Click"/>
<Button Content="M" Click="Button_Click"/>
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>