Frage

Ich habe einen DataRepeater und der folgende Code löscht nur den ersten Datensatz, unabhängig davon, welche ausgewählt wird. Ich bin nicht ganz davon überzeugt, dass dies der richtige Weg ist, dies mit einem DataRepeater zu tun, aber ich konnte keine bessere Lösung finden. Ich muss in der Lage sein, einen beliebigen Datensatz auszuwählen und zu löschen.

    //delete document
    private void cmdDeleteDoc_Click(object sender, EventArgs e)
    {

        if (this.dataRepeater1.CurrentItemIndex == 0)
        {

            //begin reset
            this.dataRepeater1.BeginResetItemTemplate();
            // Delete Row Here

            DataClasses1DataContext db = new DataClasses1DataContext();

            System.Data.DataRowView SelectedRowView;
            newCityCollectionDataSet.DocumentsRow SelectedRow;

            SelectedRowView = (System.Data.DataRowView)documentsBindingSource.Current;
            SelectedRow = (newCityCollectionDataSet.DocumentsRow)SelectedRowView.Row;


            var matchedDocument = (from c in db.GetTable<Document>()
                                   where c.DocIDKey == SelectedRow.DocIDKey
                                   select c).SingleOrDefault();

            db.Documents.DeleteOnSubmit(matchedDocument);
            db.SubmitChanges();

            LoadCaseNumberKey(matchedDocument.CaseNumberKey, false, "documents");
            this.dataRepeater1.EndResetItemTemplate();
        }


    }

Jede Hilfe wäre großartig !.

War es hilfreich?

Lösung

Ich vermute, dass Sie zwischen Ihren verwechselt werden documentsBindingSource und dein dataRepeater.

Was Sie visuell "sehen", ist der DataRepeater, während Sie "bekommen", das ist das documentsBindingSource.Current (dass Sie als Sein abrufen SelectedRowView)
das wird immer auf 0 Index eingestellt. Dies ist eine allzu kommende Winform-Steuerfalle.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top