none
Wie übergebe ich ausgewählte Objekte in einer ListView RRS feed

  • Frage

  • Hallo,

    ich schreibe z.Z. ein Programm mit dem man Schulungen verwalten kann. In der GUI kann man mit Hilfe von Comboboxen die Schulungen auswählen und sie dann einer ListView hinzufügen. Nun möchte ich gern, zum Eintragen in die Datenbank, meine ausgewählten Schulungen weitergeben. 

    <ListView Name="listBox1" Margin="289,46,21,91" Background="White">
                <ListView.View>
                    <GridView>
                        <GridViewColumn Width="120" Header="Schulungs-ID" DisplayMemberBinding="{Binding SchulungsID}" />
                        <GridViewColumn Width="320" Header="Schulung" DisplayMemberBinding="{Binding Schulung}" />
                    </GridView>
                </ListView.View>
     </ListView>

    Das ist der Code aus dem xaml, im Code behind übergebe ich die komplette ListView und eine Combobox an die Verarbeitungsklasse. Bisher hab ich versucht das Problem mit 

    internal bool Schulung_Mirtarbeiter_Hinzufuegen(ComboBox MitarbeiterAuswahl_CB, ListView listBox1)
            {
    
                int M_ID = Convert.ToInt32(Person.Mitarbeiternr(MitarbeiterAuswahl_CB.Text));
                int k = listBox1.Items.Count;
    
                for (int i = 0; i < k; i++)
                {
    
                    string Schulungs_ID = listBox1.Items[i].ToString();
                    con.Open();
                    temp.Clear();
                    temp = GetStringListViaSQL("SELECT * FROM dbo.Schulungswunsch WHERE PersonalNR=" + M_ID + " AND SchulungsID='" + Schulungs_ID + "'");
                    if (temp.Count == 0)
                    {
                        String updateData = "INSERT INTO dbo.schulungswunsch(PersonalNR, SchulungsID,teilgenommen,Eingeladen) VALUES (" + M_ID + ", '" + Schulungs_ID + "',0,0)";
                        SqlCommand update = new SqlCommand(updateData, con);
                        update.ExecuteNonQuery();
                        con.Close();
                    }
                    else
                    {
                        con.Close();
                    }
                } return true;
            }

    zu lösen, allerdings steht jetzt in Schulungs_ID die komplette Zeile der ListView und nicht nur der erste Eintrag. Gibt es eine Möglichkeit auf diesen zuzugreifen? Oder evtl eine Sinnvollere Variante um die Daten zu übertragen?

    Gruß,

    royaldo

    Mittwoch, 26. September 2012 05:48

Antworten

  • Hi RoYaLDo,
    Deine Frage ist nur schwer verständlich, da unklar ist, wie Dein Datenmodell aussieht und warum Du dies nr zur Bindung nutzt.
     
    Üblicherweise werden die Daten in einer Inline-Datenbank gehalten, z.B. in einer ObservableCollection mit Elementen aus einem EDM. Die Oberfläche holt sich die Daten nur aus der Inline-Datenbank. Die Daten werden zur Verarbeitung nicht aus den angezeigten Zeichenketten, sondern aus der genutzten Inline-Datenbank. Bei Nutzung von EDM braucht man da nur ein SavaChanges abzusetzen und alle Daten werden in der externen Datenbank aktualisiert.
     
    --
    Viele Gruesse
    Peter
    Montag, 8. Oktober 2012 16:24

Alle Antworten

  • kann mir niemand helfen?
    Montag, 1. Oktober 2012 05:35
  • So wie ich das sehe, möchtest du lediglich auf Spalte der Schulungs-ID zugreifen und hast aktuell noch das Problem, dass durch deinen Zugriff via .Items[i] den kompletten Eintrag zurückgeliefert bekommst.

    Auf einzelne Spalten einer Zeile kannste du via listBox.Items[i].SubItems[Spalte] zugreifen - in deinem Falle wäre das meines Erachtens nach:

    listBox1.Items[i].SubItems[0].ToString();

    Cheers,

    dnlg


    Montag, 1. Oktober 2012 07:28
  • Hallo, danke schonmal für die Antwort, auf dei SubItems Variante war ich im Internet auch gestoßen, allerdings bekomme ich dann folgende Fehlermeldung 'object' does not contain a definition for 'SubItems' and no extension method 'SubItems' accepting a first argument of type 'object' could be found (are you missing a using directive or an assembly reference?) Die sagt mir allerdings nicht allzu viel. Gruß, royaldo
    Montag, 1. Oktober 2012 09:32
  • wirklich niemand der mir helfen kann? oder evtl einen anderen lösungsansatz empfehlen kann?

    Montag, 8. Oktober 2012 07:09
  • Hi RoYaLDo,
    Deine Frage ist nur schwer verständlich, da unklar ist, wie Dein Datenmodell aussieht und warum Du dies nr zur Bindung nutzt.
     
    Üblicherweise werden die Daten in einer Inline-Datenbank gehalten, z.B. in einer ObservableCollection mit Elementen aus einem EDM. Die Oberfläche holt sich die Daten nur aus der Inline-Datenbank. Die Daten werden zur Verarbeitung nicht aus den angezeigten Zeichenketten, sondern aus der genutzten Inline-Datenbank. Bei Nutzung von EDM braucht man da nur ein SavaChanges abzusetzen und alle Daten werden in der externen Datenbank aktualisiert.
     
    --
    Viele Gruesse
    Peter
    Montag, 8. Oktober 2012 16:24
  • Hallo Peter, 

    vielen Dank für die Antwort. Ich werde mir das mal anschauen, da es mir als Anfänger nicht allzu viel sagt. Vermutlich hat sich das Problem damit erledigt.

    Gruß,

    RoYaLDo

    Dienstag, 9. Oktober 2012 05:47
  • Hallo roYaLDo,

    Ich gehe davon aus, dass die Antwort Dir weitergeholfen hat.
    Solltest Du noch "Rückfragen" dazu haben, so gib uns bitte Bescheid.

    Grüße,
    Robert


    Robert Breitenhofer, MICROSOFT   Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    Freitag, 12. Oktober 2012 14:25
    Moderator