2016-12-04 4 views
0

Ich habe dieses Formular, wenn ich es einige ID geben und klicken Sie auf die hervorgehobene Schaltfläche, zeigt mir einige Informationen in einer Datagridview aus einer Datenbank. First FormÄnderungen von Datagridview nicht in Datenbank gespeichert

Der Code der Taste ist hier:

private void kerkoButton_Click(object sender, EventArgs e) 
    { 
     try 
     {    
      Konektimi(); 
      string query = "SELECT * FROM Vizita WHERE [email protected]"; 

       using (SqlCommand command = new SqlCommand(query, conn)) 
       { 

        command.Parameters.AddWithValue("@pacientiId",pacientiTextBox.Text);            
        conn.Open(); 
        using (SqlDataReader reader = command.ExecuteReader()) 
        { 
         if (reader.HasRows) 
         { 
          DataTable dt = new DataTable(); 
          dt.Load(reader); 
          forma.vizitaDataGridView.DataSource = dt; 
          forma.ShowDialog(); 
         } 
         else 
         { 
          MessageBox.Show("Nuk ka të dhëna për këtë pacient"); 
         } 
        } 
        conn.Close(); 
       } 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 

Suposing, dass wir etwas aus der Datenbank wir diese erhalten erhalten: Second Form,with the results

Dies ist eine neue Form, die nach geöffnet wird, klicken der kerkoButton.

JETZT ist das Problem: Wenn ich eine Zeile (oder einige Zeilen) bearbeite, wenn ich auf Speichern klicke, werden die Änderungen nicht in der Datenbank gespeichert. Was soll ich tun? Kann ich in diesem Datagridform ein SaveButton erstellen? Wenn ja, wie?

Antwort

0

Werfen Sie einen Blick auf „how to update row in DataGridView?

Sie können die bearbeitete Zeile zugreifen, indem Sie die Eigenschaft mit CurrentRow Ihres Datagridview wie so:

DataRowView dataRowView = yourDataGridView.CurrentRow.DataBoundItem as DataRowView; 
DataRow[] rowsToUpdate = new DataRow[] { dataRowView.Row }; 

SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM Vizita", con); 
SqlCommandBuilder builder = new SqlCommandBuilder(adapter); 
adapter.Update(rowsToUpdate); 

Alternativ, wenn Sie alle bearbeiteten Zeilen aktualisieren möchten bei Einmal müssen Sie eine Markierung erstellen und sie auf true setzen, wenn Sie eine Eigenschaft mit dem Ereignis PropertyChanged ändern.

Wenn Sie auf "Speichern" klicken, durchlaufen Sie alle Zeilen und fügen die bearbeiteten Zeilen zu rowsToUpdate hinzu.

+0

Wenn Sie die Datenbindung ordnungsgemäß verwenden, wird die DataTable ihre eigenen Änderungen verfolgen, und Sie müssen nur Update auf dem Adapter aufrufen. Wenn Sie über Rasterzeilen iterieren, tun Sie es falsch. – Crowcoder

Verwandte Themen