Question

J'ai un DataRepeater et le code suivant supprime uniquement le dossier FIRST quel que soit celui qui est sélectionné. Je ne suis pas tout à fait convaincu que c'est la bonne façon de le faire avec un DataRepeater mais je ne pouvais pas trouver une meilleure solution. Je dois être en mesure de sélectionner tout enregistrement et le supprimer.

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


    }

Toute aide serait génial!.

Était-ce utile?

La solution

Je suppose que votre sont mélangés entre votre documentsBindingSource et votre dataRepeater.
Ce que vous « voyez » est visuellement le DataRepeater, tout ce que vous « get », est le documentsBindingSource.Current (que vous extrayez comme SelectedRowView)
qui est toujours à 0 index. Ceci est un piège de contrôle Winforms tout trop commun.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top