C # .NET WPF - DataTable (SQLite) как источник DataGrid с группировкой - PullRequest
0 голосов
/ 22 апреля 2019

Я новичок в 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...