2016-04-26 8 views
0

Der Löschbefehl meines Tableadapters ist eigentlich eine gespeicherte Prozedur, die die Zeile mit dem Datum aktualisiert, zu dem die Zeile gelöscht wurde, sowie den Benutzer, der das Löschen in einer anderen Spalte vorgenommen hat möchte die Zeile löschen, aber nur markieren, um sie nicht in zukünftigen Selects zu enthalten. Ich verwende das RowDeleting-Ereignis meines Datatables wie unten. Ich erhalte keine Fehler. Die Zeile wird aus der Datagridview-Sicht entfernt, die an meine Datentabelle gebunden ist, obwohl meine beiden Spalten in der Datenbanktabelle nicht erfolgreich aktualisiert werden. Wo gehe ich falsch?DataTabe_RowDeleting, Datenbank wird nicht aktualisiert

private void PROCFixedIncomeTradesSelect_RowDeleting(object sender, DataRowChangeEventArgs e) 
{ 
    AAMOpsDBDataSet.PROCFixedIncomeTradesSelectRow row = (AAMOpsDBDataSet.PROCFixedIncomeTradesSelectRow)e.Row; 
    row.Deleted = DateTime.Now; 
    row.DeletedBy = Environment.UserName; 
} 

-Code Ich bin mit Änderungen db drücken ist unten:

private void pROCFixedIncomeTradesSelectBindingNavigatorSaveItem_Click(object sender, EventArgs e) 
{ 
    SaveData(); 
} 

private void SaveData() 
{ 
    this.Validate(); 
    pROCFixedIncomeTradesSelectBindingSource.EndEdit(); 
    this.tableAdapterManager.UpdateAll(aAMOpsDBDataSet); 
} 

bearbeiten, Tag 2, ich bin immer noch eine Antwort auf diese Frage zu finden, die Hoffnung, irgendwelche Vorschläge auf Dinge, die ich Kann testen, um das Problem zu diagnostizieren? Ich habe einen Test meines Aktualisierungsbefehls durchgeführt, einen Wert in einer Zeile der Datagridview geändert und auf die Schaltfläche zum Speichern geklickt, wobei der Wert in der Datenbank erfolgreich aktualisiert wurde.

+0

Rufen Sie 'Update()' jemals auf Ihrem Tabellenadapter? – Crowcoder

+0

Ja, ich habe meinen Beitrag mit dem Code – Gavin

+0

aktualisiert, versuche es mit 'Update()' auf dem Tableadapter, anstatt den tableAdapterManager zu durchlaufen. – Crowcoder

Antwort

0

Ich bin immer noch verwirrt, warum mein anderer Code nicht so funktionierte, wie ich es wünschte, aber ich entfernte den Event-Handler, den ich benutzte, und mache jetzt meine Änderungen im RowUpdating-Ereignis des Tabellenadapters. Dieser Code funktioniert so, wie ich es möchte.

private void Adapter_RowUpdating(object sender, System.Data.SqlClient.SqlRowUpdatingEventArgs e) 
{ 
    if (e.StatementType == StatementType.Delete) 
    { 
     pROCFixedIncomeTradesSelectTableAdapter.Adapter.DeleteCommand.Parameters["@Deleted"].Value = DateTime.Now; 
     pROCFixedIncomeTradesSelectTableAdapter.Adapter.DeleteCommand.Parameters["@DeletedBy"].Value = Environment.UserName; 
    } 
}