Domanda

Ho un DataRepeater e il seguente codice elimina solo il primo record indipendentemente da quale sia selezionato. Non sono del tutto convinto che questo sia il modo corretto per farlo con un data -matepeater, ma non sono riuscito a trovare una soluzione migliore. Devo essere in grado di selezionare qualsiasi record ed eliminarlo.

    //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();
        }


    }

Qualsiasi aiuto sarebbe grande!.

È stato utile?

Soluzione

La mia ipotesi è che sei confuso tra il tuo documentsBindingSource e il tuo dataRepeater.

Quello che "vedi" visivamente è il DataRepeater, mentre quello che "ottieni", è il documentsBindingSource.Current (Che recuperi come essere SelectedRowView)
che è sempre impostato su 0 indice. Questa è una trappola di controllo Winforms fin troppo comune.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top