2016-04-07 4 views
0

Ich muss ausgewählte Zeile in Datagrid aktualisieren, wenn ich auf die Schaltfläche Ponuda klicken.Aktualisieren der ausgewählten Zeile in der Datenbank mit der Schaltfläche klicken

enter image description here

Das Problem ist, wenn ich auf die Schaltfläche klicken, passiert nichts, aber wenn ich Anwendung neu starten, wird ganze Liste aktualisiert. Also brauche ich eine Möglichkeit, nur die Zeile, die ich ausgewählt habe, zu aktualisieren und sie sofort zu aktualisieren und nicht nach dem Neustart der Anwendung.

Dies ist mein Code für Schaltfläche klicken:

private void button3_Click(object sender, RoutedEventArgs e) 
     { 
      // count = 120; 
      // tmr.Start(); 

      using (SqlConnection conn = new SqlConnection(@"data source=ZC-PC\SQLEXPRESS;database=Aukcija;integrated security=true;")) 
      { 
        DataTable cena1 = new DataTable(); 
        conn.Open(); 
        SqlDataAdapter DA = new SqlDataAdapter(" UPDATE Predmet SET trenutnaCena = trenutnaCena + 1", conn); 
        SqlCommand cmd = new SqlCommand("UPDATE Predmet SET trenutnaCena = trenutnaCena + 1", conn); 
        cmd.ExecuteNonQuery(); 
        DA.Update(cena1); 
        conn.Close(); 

      } 

     } 
+0

Sie ändern nie die Daten in der DataGrid, so dass es nicht selbst aktualisieren wird, müssen Sie es neu befüllen –

+0

Ich habe versucht, 'aukcija_bazeDataGrid.DataContext = aukcijeTable;' nach 'Da.Update (cena1); aber immer noch dasselbe. 'aukcija_bazeDataGrid' ist der Name meines' DataGrid'. –

+0

Soweit ich weiß, müssen Sie die Datenquelle jedes Mal trennen und erneut binden, wenn Sie sie aktualisieren –

Antwort

0

Wenn Sie Bindungen verwenden, sollten es die Aktualisierung werden. Der Grund, warum dies nicht der Fall ist, besteht darin, dass das Objekt, das Ihre Bindung an das DataGrid (das eine ObservableCollection oder eine Klasse basierend auf einem sein sollte) nicht INotifyPropertyChanged implementiert.

Wenn Sie dies nicht bereits getan haben, implementieren Sie INotifyPropertyChanged und das OnPropertyChanged-Ereignis für jede Eigenschaft. Wenn sich dann ein Wert ändert, wird dies sowohl im DataGrid als auch in der tatsächlichen Sammlung widergespiegelt.

Sie sollten sicherstellen, dass Sie ein Ereignis haben, das die Datenbank mit den neuen Sammlungswerten aktualisiert, wann immer dies und das geschieht (was ich bemerkte button3_Click kümmert sich).

Wenn das nicht funktioniert, lass es mich wissen, weil es sollte.

+0

Entschuldigung für eine wirklich späte Antwort, können Sie mir ein Beispiel für PropertyChanged-Ereignis für meinen Code geben, da ich nicht sehr vertraut damit bin? –

Verwandte Themen