WPF - DataSet - SQLite - Binding

  • C#

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    WPF - DataSet - SQLite - Binding

    Servus,

    ganz einfaches Problem:
    ich will ne Tabellen Struktur in ein DataSet laden. Im CodeBehind. Logisch.
    So...die Daten kommen aus einer SQLite Datenbank und sind per ComboBox auswählbar.
    Aber das ist uninteressant.

    Code zum Laden:

    C#-Quellcode

    1. using (SQLiteCommand sqlCom = new SQLiteCommand("SELECT * FROM " + ((setItem)((ComboBox)sender).SelectedItem).id, sqlConn))
    2. {
    3. using (SQLiteDataReader sqlR = sqlCom.ExecuteReader())
    4. {
    5. dT = new DataTable();
    6. dT.Load(sqlR);
    7. dS = new DataSet();
    8. dS.Load(sqlR, LoadOption.OverwriteChanges, dT);
    9. }
    10. }

    SetItem:

    C#-Quellcode

    1. public struct setItem
    2. {
    3. public string id { get; set; }
    4. public string name { get; set; }
    5. }

    so..nun möcht ich das aber korrekt angezeigt bekommen und auch Veränderungen per Code an der Tabelle machen.
    Nur: wie genau geht das und wie kann ich den Fehler

    Quellcode

    1. Die Tabelle ginelh gehört nicht zu diesem DataSet.

    ginelh ist einfach nur ein Randomstring generiert von dem Tool zur Erstellung der Datenbank. Ebenfalls unwichtig.
    Die Datenbank sieht ungefähr so aus:

    Quellcode

    1. Datenbank
    2. \-structure
    3. \-{Zufällige Zeichenfolgen}


    Ich vergas zu erwähnen, dass der Teil im XAML so aussieht:

    XML-Quellcode

    1. <DataGrid AutoGenerateColumns="False" Margin="12,162,12,12" Name="dg_items" CanUserReorderColumns="False" CanUserSortColumns="False" DataContext="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=Window}}" ItemsSource="{Binding dS}" />

    dS = DataSet.

    ---

    Okay..soweit so gut.

    C#-Quellcode

    1. using (SQLiteCommand sqlCom = new SQLiteCommand("SELECT * FROM " + ((setItem)((ComboBox)sender).SelectedItem).id, sqlConn))
    2. {
    3. using (SQLiteDataAdapter sqlA = new SQLiteDataAdapter(sqlCom))
    4. {
    5. dT.Clear();
    6. dT.TableName = ((setItem)((ComboBox)sender).SelectedItem).id;
    7. sqlA.Fill(dT);
    8. }
    9. }

    XML-Quellcode

    1. <DataGrid AutoGenerateColumns="False" Margin="12,162,12,12" Name="dg_items" CanUserReorderColumns="False" CanUserSortColumns="False" DataContext="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=Window}}" ItemsSource="{Binding Path=dT.DefaultView}">
    2. <DataGrid.Columns>
    3. <DataGridTextColumn Binding="{Binding id}" Header="ID" />
    4. <DataGridTextColumn Binding="{Binding name}" Header="Name" />
    5. <DataGridTextColumn Binding="{Binding rarity}" Header="Seltenheit" />
    6. <DataGridTextColumn Binding="{Binding have}" Header="Habe" />
    7. <DataGridTextColumn Binding="{Binding need}" Header="Brauche" />
    8. <DataGridTextColumn Binding="{Binding double}" Header="Doppelt" />
    9. </DataGrid.Columns>
    10. </DataGrid>

    Hat mir dann geholfen.
    Wie kann ich jetzt noch per Code Elemente einfügen/löschen/verändern?

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „AliveDevil“ ()