none
Ausgewählten Datensatz vom DataGrid weiterverwenden RRS feed

  • Frage

  • Hallo zusammen

    Ich bin gerade dabei einen kleine Verwaltungssoftware zu programmieren. Wie ich die Daten ins DG reinbekomme habe ich ja noch irgendwie verstanden, aber komme überhaupt nicht weiter, wenns darum geht die Daten, bei einer Auswahl, weiter zu bearbeiten. Kann mir bitte jemand sagen, wie ich das am besten bewerkstelligen kann.

    so binde ich die Daten ans DG:

    //Kunden in DataGrid laden -----------
                string SQLCommand = "SELECT ID, Firstname, Name, Street, PLZ, Place, Tel FROM dbo.CLIENT;"            
    
                DBConnection connection = new DBConnection();
    
                //Verbindung herstellen
                sqlconn = new SqlConnection(connection );
    
                sqlconn.Open();
                adapter = new SqlDataAdapter(SQLCommand, sqlconn);
    
                DataSet dsClientList = new DataSet();
                adapter.Fill(dsClientList, "CLIENT");
    
                sqlconn.Close();
    
                DataTable tblclientList = dsClientList.Tables[0];
    
                DataGridClientList.ItemsSource = tblclientList .DefaultView;

    Danke Gezim95

    Sonntag, 18. Mai 2014 15:30

Antworten

  • Hallo,
    das DataGrid stellt die SelectedItems-Eigenschaft bereit u die markierten Zeilen auszulesen. Sollte nur eine Zeile markiert sein, kannst du die SelectedItem-Eigenschaft benutzen.

    Einmal erhälst du eine Auflistung mit Elementen und einmal nur das ausgewählte Element. Da du eine DataView als ItemsSource benutzt, ist jedes Element vom Typ DataRowView. Über die Row-Eigenschaft kannst du die eigentliche Datenzeile abrufen und bearbeiten:

    foreach (DataRowView row in DataGridClientList.SelectedItems)
    {
        //row ist jetzt eines der markierten Elemente im DG
        var dataRow = row.Row;
        var firstName = dataRow.Field<string>("Firstname");//Einen Wert des Datensatzes abfragen (Typ=string, Column=Firstname)
        dataRow.SetField<string>("Firstname", "Geändert: " + firstName);//Wert in Datensatz setzen (Typ=string, Column=Firstname)
    }


    Tom Lambert - C# MVP
    Bitte bewertet- und markiert Beiträge als Antwort. Danke.
    Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter
    Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets

    • Als Antwort markiert Gezim95 Montag, 19. Mai 2014 11:14
    Sonntag, 18. Mai 2014 16:19
    Moderator

Alle Antworten

  • Hallo,
    das DataGrid stellt die SelectedItems-Eigenschaft bereit u die markierten Zeilen auszulesen. Sollte nur eine Zeile markiert sein, kannst du die SelectedItem-Eigenschaft benutzen.

    Einmal erhälst du eine Auflistung mit Elementen und einmal nur das ausgewählte Element. Da du eine DataView als ItemsSource benutzt, ist jedes Element vom Typ DataRowView. Über die Row-Eigenschaft kannst du die eigentliche Datenzeile abrufen und bearbeiten:

    foreach (DataRowView row in DataGridClientList.SelectedItems)
    {
        //row ist jetzt eines der markierten Elemente im DG
        var dataRow = row.Row;
        var firstName = dataRow.Field<string>("Firstname");//Einen Wert des Datensatzes abfragen (Typ=string, Column=Firstname)
        dataRow.SetField<string>("Firstname", "Geändert: " + firstName);//Wert in Datensatz setzen (Typ=string, Column=Firstname)
    }


    Tom Lambert - C# MVP
    Bitte bewertet- und markiert Beiträge als Antwort. Danke.
    Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter
    Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets

    • Als Antwort markiert Gezim95 Montag, 19. Mai 2014 11:14
    Sonntag, 18. Mai 2014 16:19
    Moderator
  • Hallo,

    das hat super funktioniert, danke.

    Mfg Gezim95

    Montag, 19. Mai 2014 11:15