Значения массива MongoDB не отображаются в таблице данных WPF-XAML - Решение - PullRequest
0 голосов
/ 28 октября 2019

Я пытаюсь запросить данные (переупорядочения) из моей базы данных MongoDB, чтобы показать их в моей таблице данных. Нормальные значения (пары ключ-значение) выглядят идеально , но значения массива не , и я не понимаю, чего мне не хватает. Я опубликую свой соответствующий код ниже, надеясь, что кто-то может сказать мне, что мне не хватает, чтобы показать значения массива внутри Bestellung в моей сетке данных . Заранее благодарен за любую помощь, очень признателен!

Вот код:

Основные изменения порядка модели

public class reorders
{
    [BsonRepresentation(BsonType.ObjectId)]
    public string Id { get; private set; }
    [BsonElement("Hv")]
    public string Hv { get; set; }
    [BsonElement("Bv")]
    public string Bv { get; set; }
    [BsonElement("Bauleiter")]
    public string Bauleiter { get; set; }
    [BsonElement("Empfaenger")]
    public string Empfaenger { get; set; }
    [BsonElement("Empfaenger_Ansprechpartner")]
    public string Empf_Ansprechpartner { get; set; }
    [BsonElement("Empfaenger_Mail")]
    public string Empf_Mail { get; set; }
    [BsonElement("Anlieferungsort")]
    public string Anlieferungsort { get; set; }
    [BsonElement("Anschrift")]
    public string Adressat { get; set; }
    [BsonElement("Adressat")]
    public string Anschrift { get; set; }
    [BsonElement("Plz_Ort")]
    public string Plz_Ort { get; set; }       
    [BsonElement("Kontaktperson_Kontaktnr")]
    public string Kontaktperson_Kontaktnr { get; set; }     
    public string Liefertermin { get; set; }
    [BsonElement("Bearbeiter")]
    public string Bearbeiter { get; set; }
    [BsonElement("Telefon_Bearbeiter")]
    public string Telefon_Bearbeiter { get; set; }
    [BsonElement("Mail_Bearbeiter")]
    public string Mail_Bearbeiter { get; set; }
    [BsonElement("Bestelldatum")]
    public string Bestelldatum { get; set; }
    [BsonElement("Projektleiter")]
    public string Projektleiter { get; set; }
    [BsonElement("Bemerkung_oben")]
    public string Bemerkung_oben { get; set; }
    [BsonElement("Angelegt_am")]
    public string Angelegt_am { get; set; }       
    [BsonElement("Rechnungsnr")]
    public string Rechnungsnr { get; set; }
    [BsonElement("letzteAktualisierung")]
    public string letzteAktualisierung { get; set; }

    [BsonElement("Bestellung")]
    public IList<articles> Bestellung { get; set; }

    public Nachbestellung()
    {

    }      
}

СторонаСтатьи модели (1 'reorders.Bestellung' состоит из нескольких 'статей', то есть строк сетки данных!)

public class articles
{   
    [BsonElement("Pos")]
    public string Pos { get; set; }

    [BsonElement("Artikelbezeichnung")]
    public string Artikelbezeichnung { get; set; }

    [BsonElement("Artikelnummer")]
    public string Artikelnummer { get; set; }

    [BsonElement("Einheit")]
    public string Einheit { get; set; }

    [BsonElement("Menge")]
    public string Menge { get; set; }

    [BsonElement("Einzelpreis")]
    public string Einzelpreis { get; set; }

    [BsonElement("Gesamtpreis")]
    public string Gesamtpreis { get; set; }

    [BsonElement("Anforderungsgrund")]
    public string Anforderungsgrund { get; set; }

    [BsonElement("Anforderungsnr")]
    public string Anforderungsnr { get; set; }

    [BsonElement("Anforderer")]
    public string Anforderer { get; set; }

    [BsonElement("Bemerkungen")]
    public string Bemerkungen { get; set; }                    
}

Структура MongoDB (см. Таблицу данных (последнее изображение) для значений, которые находятся втам я должен был удалить оригинальные для защиты конфиденциальности):

All database entries are here (just imagine they are all filled. I had to remove the actual values due to privacy protection). No problem here! The Bestellung-Array (order-Array) is filled just fine like I want it.

BUT the datagrid view doesnt show the array values starting from

CODE BEHIND (также мой атм ViewModel, я знаю нарушение MVVM ... но сейчас это не важно, если только он не отвечает за массив, не отображаемый в сетке данных!)

public existingReorders(string hv)
    {
        InitializeComponent();
        var db = new MongoCRUD("myDB");
        //MongoDB Query
        var recs = db.LoadRecords<reorders>("myReorders", hv);
        //checking if there are any records
        if(recs.Count <= 0)
        {
            MessageBox.Show("There were no records found for this hv!", "NO REORDERS FOUND!", MessageBoxButton.OK, MessageBoxImage.Information);
        }
        else
        {
            this.Show();                
            dgVorh.ItemsSource = recs;  
            dgVorh.DataContext = recs;

        }
    }

XAML:

<Window x:Class="Nachbestellungen.existingReorders"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:Nachbestellungen"
    mc:Ignorable="d"
    WindowStartupLocation="CenterScreen"
    Title="Existing Reorders" WindowState="Maximized" WindowStyle="ThreeDBorderWindow">

<Window.Resources>
    <Style x:Key="cellLightGray" TargetType="{x:Type TextBlock}">
        <Setter Property="Background" Value="LightGray" />
    </Style>
</Window.Resources>
<!-- View -->
<Grid x:Name="gridVorh">
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto" />
        <RowDefinition Height="Auto" />
    </Grid.RowDefinitions>
    <DataGrid x:Name="dgVorh" Margin="5" Grid.Row="0"
              SelectionMode="Single" SelectionUnit="Cell" IsReadOnly="False" 
              CanUserAddRows="False" CanUserDeleteRows="False" AutoGenerateColumns="False" 
              BorderBrush="Black" BorderThickness="2" RowHeight="30" FontFamily="Arial Narrow" FontSize="18">

        <!-- Style Column Headers -->
        <DataGrid.Resources>
            <Style TargetType="{x:Type DataGridColumnHeader}">
                <Setter Property="Foreground" Value="#FFFFFF"/>
                <Setter Property="Background" Value="#DD002C"/>
                <Setter Property="FontWeight" Value="Bold"/>
                <Setter Property="BorderThickness" Value="0,0,1,2"/>
                <Setter Property="BorderBrush" Value="Black"/>
                <Setter Property="FontSize" Value="18"/>
                <Setter Property="HorizontalContentAlignment" Value="Center"/>
                <Setter Property="Height" Value="30"/>
            </Style>
        </DataGrid.Resources>

        <DataGrid.Columns>
            <DataGridTextColumn Header="Angelegt am" Binding="{Binding Angelegt_am}" IsReadOnly="True">
                <DataGridTextColumn.ElementStyle>
                    <Style TargetType="{x:Type TextBlock}">
                        <Setter Property="TextBlock.Background" Value="LightGray"/>
                    </Style>
                </DataGridTextColumn.ElementStyle>
            </DataGridTextColumn>
            <DataGridTextColumn Header="Bearbeiter" Binding="{Binding Bearbeiter}" IsReadOnly="True" ElementStyle="{StaticResource cellLightGray}"/>
            <DataGridTextColumn Header="Bestelldatum" Binding="{Binding Bestelldatum}" IsReadOnly="True" ElementStyle="{StaticResource cellLightGray}"/>
            <DataGridTextColumn Header="Bestellt bei" Binding="{Binding Empfaenger}" IsReadOnly="True" ElementStyle="{StaticResource cellLightGray}"/>
            <DataGridTextColumn Header="Lieferort" Binding="{Binding Anlieferungsort}" IsReadOnly="True" ElementStyle="{StaticResource cellLightGray}"/>
            <DataGridTextColumn Header="Adressat" Binding="{Binding Adressat}" IsReadOnly="True" ElementStyle="{StaticResource cellLightGray}"/>
            <DataGridTextColumn Header="Lieferanschrift" Binding="{Binding Anschrift}" IsReadOnly="True" ElementStyle="{StaticResource cellLightGray}"/>
            <DataGridTextColumn Header="Lieferort" Binding="{Binding Plz_Ort}" IsReadOnly="True" ElementStyle="{StaticResource cellLightGray}"/>
            <DataGridTextColumn Header="Rechnungsnr" Binding="{Binding Rechnungsnr}"/>
            <DataGridTextColumn Header="ÄndDatum" Binding="{Binding letzteAktualisierung}" IsReadOnly="True" ElementStyle="{StaticResource cellLightGray}"/>
            <!--(von wem aktualisiert?)-->
            <!-- Artikel -->

            <DataGridTextColumn Header="Pos" Binding="{Binding Path=[Bestellung].Pos}" IsReadOnly="True" ElementStyle="{StaticResource cellLightGray}"/>
            <DataGridTextColumn Header="Artikelbezeichnung" Binding="{Binding Path=[Bestellung].Artikelbezeichnung}" IsReadOnly="True" ElementStyle="{StaticResource cellLightGray}"/>
            <DataGridTextColumn Header="Artikelnummer" Binding="{Binding Bestellung}" IsReadOnly="True" ElementStyle="{StaticResource cellLightGray}"/>
            <DataGridTextColumn Header="Einheit" Binding="{Binding Bestellung}" IsReadOnly="True" ElementStyle="{StaticResource cellLightGray}"/>
            <DataGridTextColumn Header="Menge" Binding="{Binding Bestellung}" IsReadOnly="True" ElementStyle="{StaticResource cellLightGray}"/>
            <DataGridTextColumn Header="Einzelpreis" Binding="{Binding Bestellung}" IsReadOnly="True" ElementStyle="{StaticResource cellLightGray}"/>
            <DataGridTextColumn Header="Gesamtpreis" Binding="{Binding Bestellung}" IsReadOnly="True" ElementStyle="{StaticResource cellLightGray}"/>
            <DataGridTextColumn Header="Anforderungsgrund" Binding="{Binding Bestellung}" IsReadOnly="True" ElementStyle="{StaticResource cellLightGray}"/>
            <DataGridTextColumn Header="Anforderungsnr" Binding="{Binding Bestellung}" IsReadOnly="True" ElementStyle="{StaticResource cellLightGray}"/>
            <DataGridTextColumn Header="Anforderer" Binding="{Binding Bestellung}" IsReadOnly="True" ElementStyle="{StaticResource cellLightGray}"/>
            <DataGridTextColumn Header="Bemerkungen" Binding="{Binding Bestellung}"/>
        </DataGrid.Columns>
    </DataGrid>
    <StackPanel Name="stpnlUpdate" Grid.Row="1" HorizontalAlignment="Center">
        <Button Name="btnUpdate" Content="Aktualisieren" 
                Background="#DD002C" Foreground="White" 
                BorderThickness="2" BorderBrush="Black" 
                Click="BtnUpdate_Click" 
                Height="40" Width="130" 
                FontFamily="Verdana" FontStyle="Oblique" 
                FontStretch="ExtraCondensed" FontSize="15" 
                FontWeight="ExtraBlack" 
                MouseEnter="BtnUpdate_MouseEnter" MouseLeave="BtnUpdate_MouseLeave">
        </Button>
    </StackPanel>
</Grid>

Вот как я хочу, чтобы это выглядело: enter image description here

Вот так выглядит представление INSERT (вставка в MongoDB): (без единичных значений, которые здесь обрезаны, поскольку они не имеют значения)

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...